一 使用者授權
grant授權
指令格式
-grant 權限清單 on 庫名 to 使用者名@"用戶端位址" identified by "密碼" //授權使用者密碼
with grant option; //有授權權限,可選項
mysql> GRANT all ON *.* TO [email protected]'192.168.4.%' IDENTIFIED BY 'tarena'; // %代表所有網段的主機
grant授權(1)
-權限清單
-all //所有權限
-usage //無權限
-select , update, insert //個别權限
-select ,update (字段名,.. .., 字段N) //指定字段
-庫名
-*.* //所有庫所有表
-庫名.* //一個庫
-庫名.表名 //一張表
grant授權(2)
-使用者名
-授權時自定義 要有辨別性
-存儲在mysql庫庫的user表裡
用戶端位址
-% //所有主機
-192.168.4.% //網段内所有主機
-192.168.4.1 //1台主機
-localhost //資料庫伺服器本機
相關指令
指令 | 作用 |
select user( ) ; | 顯示登入使用者名及用戶端 |
show grants; | 使用者顯示自身通路權限 |
show grants for 使用者名@" 用戶端位址" ; | 管理者檢視已有授權使用者權限 |
set passwiord= password( "密碼" ); | 授權使用者連接配接修改密碼 |
set password for 使用者名@ "用戶端位址" = password( "密碼" ); | 管理者重置授權使用者連接配接密碼 |
drop user 使用者名@" 用戶端位址"; | 删除授權使用者( 必須有管理權限) |
授權庫
mysql庫 記錄授權資訊,主要表如下:
- user表 記錄已有的授權使用者及權限
- db表 記錄已有授權使用者對資料庫的通路權限
- tables_priv表 記錄已有授權使用者對字段的通路權限
撤銷權限
指令格式:
mysql> revoke 權限清單 on 庫名.表 from 使用者名@" 用戶端位址";
mysql> REVOKE all ON webdb.* FROM [email protected]'%';
root密碼
恢複root密碼 (續1)
[[email protected]~]# systemctl stop mysqld.service //停止服務
[[email protected]~]# systemctl status mysqld.service //确認狀态
[[email protected] ~]# vim /etc/my.cnf
[mysqld]
skip_grant_tables //添加skip_grant_tables
.. ..
[[email protected]~]# systemctl start mysqld.service
使用mysql指令連接配接到MySQL服務,重設root的密碼
[[email protected] ~]# mysql //直接回車即可
進入 mysql> 環境後,通過修改mysql庫中user表的相關記錄,重設root使用者從本機登入的密碼:
mysql> UPDATE mysql.user SET authentication_string=PASSWORD('123qqq…A')
-> WHERE user='root' AND host='localhost'; //重設root的密碼
mysql> FLUSH PRIVILEGES; //重新整理授權表
mysql> exit
備份概述
資料備份方式
實體備份
-冷備: cp tar
邏輯備份
- mysqldump //備份指令
- mysql //恢複指令
備份操作
cp -r /var/lib/mysql 備份目錄/mysql.bak
tar -zcvf /root/mysql.tar.gz /var/lib/mysql/*
恢複操作
cp -r 備份目錄/mysql.bak /var.lib/mysql/
tar -zxvf /root/mysql.tar.gz -C /var/lib/mysql/
chown -R mysql:mysql /var/lib/mysql
資料備份政策
完全備份
- 備份所有資料
增量備份
- 備份上次備份後,所有新産生的資料
差異備份
- 備份完全備份後, 所有新産生的資料
完全備份及恢複
- 完全備份
]# mysqldump -uroot -p密碼 庫名 > 目錄/xxx.sql
- 完全恢複
]# mysql -uroot -p密碼 [ 庫名 ] < 目錄/xxx.sql
[[email protected] ~]# mysqldump -u root -p --all-databases > /root/alldb.sql
Enter password: //驗證密碼
[[email protected] mysql]# file /root/alldb.sql //确認備份檔案類型
/root/alldb.sql: UTF-8 Unicode English text, with very long lines
完全備份及恢複 ( 續1)
~ 備份是庫名表示方式
- --all-databases 或 -A //所有庫
- 資料庫名 //單個庫
- 資料庫名 表名 //單張表
- -B 資料庫1 資料庫2 //多個庫
注意事項
-無論備份還是恢複, 都要驗證使用者權限 ! ! !
binglog 日志
日志概述
~ 什麼是binlog日志
1. 也稱做 二進制日志
2. MySQL服務日志檔案的一種
3. 記錄除查詢之外的所有的SQL指令
4. 可用于資料備份和恢複
5. 配置mysql主從同步的必要條件
啟用日志
配置項 | 用途 |
server_id=數字 | 指定id值( 1-255 ) |
log_bin[ =目錄名/檔案名] | 啟用binlog日志 |
max_binlog_size=數值m | 指定日志檔案容量,預設1G |
[[email protected] ~]# vim /etc/my.cnf
[mysqld] //在他下邊手動添加
server_id=1 //指定server_id
log-bin=/mylog/db50 //指定日志目錄及名稱
[[email protected]~]# systemctl restart mysqld //重新開機服務
binglog相關檔案
- 主機名-bin.index 索引檔案
- 主機名-bin.000001 第一個二進制日志
- 主機名-bin.000002 第二個二進制日志
mysql> show master status; //檢視日志資訊
mysql> flush logs; //重新整理日志 (自動生成日志)
清楚日志
~ 删除指定編号之前的binlog日志檔案
- mysql> purge master logs to "binlog檔案名";
~ 删除所有binlog日志,重建新日志
- mysql> reset master;
mysql> purge master logs to "db50.000003"; //删除日志
mysql> system ls /mylog/ //檢視日志檔案
db50.000003 db50.000004 db50.index
mysql>
mysql> system cat /mylog/db50.index //檢視索引檔案
/mylog/db50.000003
/mylog/db50.000004
mysql>
恢複資料
分析日志
- 檢視日志目前記錄格式
mysql> show variables like " binlog_format";
修改日志記錄格式
]# vim /etc/my.cnf
[mysqld]
binlog_format= "名稱"
]# systemctl restart mysqld
三種記錄方式:
1. statement 報表模式
2. row 行模式
3. mixed 混合模式
分析日志
~ 檢視日志内容
- mysqlbinlog [選項] binlog日志檔案名
選項 | 用途 |
--start-datetime=" yyyy-mm-dd hh:mm:ss" | 起始時間 |
--stop-datetime=" yyyy-mm-dd hh:mm:ss" | 結束時間 |
--start-position=數字 | 起始偏移量 |
--stop-position=數字 | 結束偏移量 |
恢複資料
~ 基本思路
- 使用mysqlbinlog提取曆史SQL操作
- 通過管道交給 mysql指令執行
~ 指令格式
- mysqlbinlog 日志檔案 | mysql -uroot -p密碼