天天看點

mysql資料庫的使用者授權 完全備份以及增量備份

一 使用者授權

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密碼

繼續閱讀