MySQL資料庫(三)——資料庫配置管理
資料庫配置管理
使用者以及密碼管理
新建使用者:create user ‘username’@‘%’ identified by ‘password’
刪除使用者:drop user ‘zhangsan’@‘%’
重新命名使用者:rename user ‘old_user’@'host' to 'new_user'@'host
設定當前登入使用者的密碼:set password=password('123456')
設定其他使用者的密碼:set password='username'@‘host’=password('123456')
補充:破解root密碼
1.停止服務
service mysqld stop
2.使用mysqld_safe結合skip-grant-tables啟動資料
mysqld_safe --skip-grant-tables &
3.無密碼登入資料庫,更新root密碼
update mysql.user set authentication_string=password('123456') where user='root';
4.重新整理資料庫(修改的內容提取到記憶體馬上生效)
flush privileges;
資料庫日誌管理
日誌管理(六種不同的日誌)
檔案位置(原始碼安裝模板的存放位置):/etc/my.cnf
1.錯誤日誌
作用:記錄啟動、執行或停止時出現的問題,一般也會記錄警告資訊
[mysqld]下編輯開啟
log_error = /usr/local/mysql/data/mysql.err \\指定日誌的存放位置
或者log_warnings = 0/1 \\啟用警告資訊
2.通用查詢日誌
作用:記錄建立的客戶端連線和執行的語句
開啟之後對伺服器的壓力很大(一般不開啟,預設不開啟)
general_log = ON/OFF \\啟動或關閉查詢日誌,預設為關閉
general_log_file = /usr/local/mysql/data/mysql.log \\指定查詢日誌存放位置
log_output=TABLE\FILE
補充:為了除錯資料庫可以開啟查詢日誌,生產環境不建議開啟查詢日誌
3.慢查詢日誌
作用:記錄所有執行時間超過long_query_time秒的所有查詢或不使用索引的查詢,可以幫我們定位伺服器效能問題
slow_query_log = ON/OFF \\開啟或關閉慢查詢日誌,預設是關閉的
slow_query_log_file = /usr/local/mysql/data/mysql_slow.log \\指定查詢日誌存放位置
log_query_time = 10 \\定義慢查詢日誌的記錄市場,預設為10秒
4.二進位制日誌
精確的記錄了使用者對資料庫中的資料進行操作的命令和操作的資料物件
做資料增量備份,提供資料基於時間點的恢復,還可以主從複製,主伺服器開啟
5.中繼日誌
作用:從主伺服器的二進位制檔案中複製而來的時間,並儲存為的日誌檔案
relay-log = master-relay-bin
reay-log-index = master-relay-bin.index
6.事務日誌(儲存引擎)
作用:記錄lnnoDB等支援事務的儲存引擎執行事務時產生的日誌
事務性儲存引擎用於保證(ACID)原子性、一致性、隔離性和永續性;其不會立即寫到資料檔案中,而是寫到事務日誌中
事務(MySQL事務預設是自動提交的,當SQL語句提交時事務便自動提交)
是一種機制、一個操作序列,包含了一組資料庫操作命令,並且把所有的命令作為一個整體一起向系統提交或撤銷操作請求,即這一組資料庫命令要麼都執行,要麼都不執行
特點:原子性、一致性、隔離性、永續性
事務開始:begin;
提交:commit;
回滾:rollback; \\執行之後回滾到begin位置,之後的操作全部不作數
定義回滾點:savepoint si; \\定義了之後不會直接回滾到begin
設定事務為手動提交(關閉之後需要手動提交):set autocommit=0/1; \\0為關閉自動提交,1為開啟
檢視事務是否為自動提交:SHOW VARIABLES like '%autocommit%'
檢視資料庫當前程序:show processlist;
檢視當前執行的所有事務:select * from information_schema.INNODB_TRX;
檢視當前出現的鎖:select * from information_schema.INNODB_LOCKs;