mysql筆記

1.1啓動與關閉mysql
單實例:
方法一:
/etc/init.d/mysqld start/stop
netstat -lnt|grep 3306
提示:/etc/init.d/mysqld由mysql程序中的mysql.server複製而來
方法二:
/usr/local/mysql/bin/mysqld_safe --user=mysql &
killall mysqld重複使用知道出現mysqld: no process killed
注意:關閉直到出現mysqld: no process killed表示完成關閉操作。方法二的關閉命令一般生產環境下不使用。
多實例:
/data/3306/mysql start/stop
/data/3307/mysql start/stop
1.2登錄mysql
單實例:
1.mysql----剛裝完系統無密碼情況登錄方式
2.mysql -uroot --------剛裝完系統無密碼情況登錄方式
3.mysql -uroot -p ------------這裏標準命令行登錄命令
4.mysql -uroot -p'oldboy123'----------非腳本里一般不這樣用,密碼明文的會泄露密碼
多實例:
mysql -uroot -p -S /data/3306/mysql.sock
1.3mysql授權
CREATE USER 'jeffrey'@'localhost' IDENTIFIED BY 'mypass';
GRANT ALL ON db1. TO 'jeffrey'@'localhost';
意思兩條等同於GRANT ALL ON db1.
TO 'jeffrey'@'localhost' IDENTIFIED BY 'mypass';
GRANT SELECT ON db2.invoice TO 'jeffrey'@'localhost';
GRANT USAGE ON . TO 'jeffrey'@'localhost' WITH MAX_QUERIES_PER_HOUR 90;
1.4設置修改mysql root用戶密碼
由於安裝mysql後,默認的管理員root密碼爲空,很不安全,因此需要修改
mysqladmin -u root password 'ryan'
修改root密碼方法一
mysqladmin -u root -p'oldboy123' password 'oldboy'
修改root密碼方法二
mysql>UPDATE mysql.user SET password=PASSWORD("oldboy123") WHERE user='root';
mysql>FLUSH PRIVILEGES;
修改root密碼方法三
mysql安裝完畢後,root默認口令爲空,需要馬上修改root口令
mysql>set password=password('oldboy123')
1.5 如何召回丟失的mysql密碼
單實例:
killall mysqld
mysqld_safe --skip-grant-table &
mysql -u root -p
update mysql.user set password=PASSWORD('123456') WHERE USER='root'
killall mysqld
重啓mysql服務/etc/init.d/mysqld start
多實例:
killall mysqld
mysqld_safe --defaults-file=/data/3306/my.cnf --skip-grant-table &
mysql -u root -p -S /data/3306/mysql.sock
修改密碼
mysql>UPDATE mysql.user SET password=PASSWORD("oldboy123") WHERE user='root';
mysql>FLUSH PRIVILEGES;
mysq>exit;
重啓登錄測試
killall mysqld
單實例:/etc/init.d/mysqld restart
多實例:/data/3306/mysql restart

二數據庫操作
create database ceshi;
show databases
drop database
select user,host from mysql.user;------------查看數據庫中的用戶
drop user "user"@"主機域"
help show
help show create;
show create database ceshi----------查看創建數據的腳本
select database()-------顯示當前庫
select user()------------顯示當前用戶
show tables
show create user
show variables like 'character_set%'-------------查看字符集
select version()-------------顯示數據庫版本
system whoami
system ls -l/
show tables from 數據庫
grant all privileges on 數據庫. to 123@localhost
revoke 權限 on 數據庫.
from 123@localhost
show grants for 123@localhost ------------查看用戶權限

三、常用命令(常用增刪查改略)
select from test limit 6,5;-------查詢test中從7條記錄開始,查5條記錄
select
from test limit 6;-----查詢6條記錄
上邊sql等同於select from test limit 0,6;
\G----------以列表顯示
desc mysql.user-----查看錶結構
truncate table 表名-------------清空表
備份
在mysql命令中備份,system爲跳出mysql執行系統命令,執行完畢再返回mysql
mysql>system mysqldump -uroot -p'oldboy'-A -B >/tmp/oldboy.sql
mysql>system ls -l /tmp/oldboy.sql
在linux中備份(-A表示完整備份,否則用-B指定多個數據庫)
mysqldump -uroot -p'oldboy' -S /data/3306/mysql.sock -B 數據庫名>/tmp/bak.sql
恢復
mysql -uroot -p'oldboy'-S /data/3307/mysql.sock </tmp/bak.sql
四、備份和恢復
set names gbk ------------------設置字符集
修改字段字符集後,再插入中文就不會亂碼了
也可在恢復時mysql的命令行中增加字符集defaults-character_set=gbk
mysql -uroot -p'oldboy' -e "select
from oldboy.test;"
mysql -uroot -p'oldboy' -e "set names gbk;select * from oldboy.test;"
提示:1.文件本身字符集要正確gb2312
2.文件中加入set names gbk

更改my.cnf參數
[mysqld]
defaults-character_set=gbk ----------設置服務端server字符集和數據庫字符集
提示:1.在my.cnf配置文件裏[mysqld]模塊下添加字符集配置,生效後,創建數據庫和表默認都是這個字符集。2.客戶端字符集設置,set names gbk,這樣可以確保插入後的中文不出現亂碼,對執行set names gbk前插入的中文無效

*show variables like 'character_set%'
character_set_client gbk ####客戶端字符集,set names gbk
character_set_connection gbk ####連接字符集,set names gbk
character_set_database gbk ####數據庫字符集,配置文件指定或建庫建表指定
character_set_results gbk ####返回結果字符集,set names gbk
character_set_server gbk ####服務器字符集,配置文件指定或建庫建表指定

備份數據庫(多實例增加sock)(-A,-B使用)
mysqldump -u用戶 -p'oldboy' [-S /data/3306/mysql.sock ] --defaults-characterset=gbk 數據庫名>/tmp/bak$(date +%F).sql
mysqldump -u用戶 -p'oldboy' [-S /data/3306/mysql.sock ] --defaults-characterset=gbk 數據庫名 |gzip>/tmp/bak$(date +%F).sql.gz
提示:-B(創建數據庫,use 數據庫,切換數據庫)
egrep -v "#|*|--|^$" /tmp/bak_$(date +%F).sql

備份多個庫(必須使用-B)
mysqldump -u用戶 -p'oldboy' [-S /data/3306/mysql.sock ] --defaults-characterset=gbk -B 數據庫名1 數據庫名2>/tmp/bak$(date +%F).sql
mysqldump -u用戶 -p'oldboy' [-S /data/3306/mysql.sock ] --defaults-characterset=gbk -B 數據庫名1 數據庫名2 |gzip>/tmp/bak$(date +%F).sql.gz

分庫備份
mysqldump -u用戶 -p'oldboy' -S /data/3306/mysql.sock 數據庫名1 >/tmp/bak$(date +%F).sql
mysqldump -u用戶 -p'oldboy' -S /data/3307/mysql.sock 數據庫名2 >/tmp/bak
$(date +%F).sql

備份表(-B系統會認爲是兩個庫,-B系統認爲是庫和表)(-d只備份結構)
mysqldump -u用戶 -p'oldboy' -S /data/3306/mysql.sock 數據庫名1 表名 >/tmp/bak$(date +%F).sql
mysqldump -u用戶 -p'oldboy' -S /data/3306/mysql.sock 數據庫名1 表名1 表名2 >/tmp/bak
$(date +%F).sql
mysqldump -u用戶 -p'oldboy' -d -S /data/3306/mysql.sock 數據庫名1 表名 >/tmp/bak_$(date +%F).sql
恢復數據庫(sql文件中沒有use 數據庫需要在在mysql命令中指定數據庫)
方法一:
use 數據庫名
source 備份的sql文件
方法二:
mysql -u root -p '123' -S /data/3306/mysql.sock -e "use test;source /tmp/bak_212.sql;"
方法三:
mysql -u root -p '123' -S /data/3306/mysql.sock < /tmp/bak.sql
-e參數
mysql -u root -p '123' -S /data/3306/mysql.sock -e "select * from test;"
mysql -u root -p '123' -S /data/3306/mysql.sock -e "show full processlist;" >a.log
mysql -u root -p '123' -S /data/3306/mysql.sock -e "show variables;"--------------查看mysql的參數配置
mysql -u root -p '123' -S /data/3306/mysql.sock -e "show global status;"------------查看數據庫狀態
mysql -u root -p '123' -S /data/3306/mysql.sock -e "show global status;" |grep select
mysql -u root -p '123' -S /data/3306/mysql.sock -e "show variables;" | grep key_buffer_size--------查看緩存區大小
mysql -u root -p '123' -S /data/3306/mysql.sock -e "set global key_buffer_size =21777218;"----------不重啓數據庫,修改參數,修改配置文件後,需要重啓數據庫
sed -i 's#被替換值#替換後的值#g' 文件名

echo "use database" |mysql -u root -p '123' -S /data/3306/mysql.sock
類似與-e參數

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章