mysql用戶權限分配及主從同步復制
賦予wgdp用戶查詢權限:
grant select on wg_dp.* to 'wgdp'@'%' IDENTIFIED BY 'weigou123';
grant all privileges on *.* to 'yangchao'@'%' IDENTIFIED
BY 'weigou123'
查詢mysql其他用戶權限:
show grants for wgdp;
取消wgdp用戶權限:
revoke all on *.* from wgdp;
PS:grant, revoke 用戶權限後,該用戶只有重新連接 MySQL 數據庫,權限才能生效。
權限范圍:
1.select、insert、update和delete權限 允許你在一個數據庫現有的表上實施操作,是基本權限
2.alter權限允許你使用ALTER TABLE
3.create和drop權限允許你創建新的數據庫和表,或拋棄(刪除)現存的數據庫和表 如果你將mysql數據庫的drop權限授予一個用戶,該用戶能拋棄存儲了MySQL存取權限的數據庫!
mysql5.5後 mysql的配置文件my.cnf中的主從配置的一些字段已經被廢棄,開啟主從的步驟:
1.准備工作,有兩個linux主機
master:10.209.112.58 mysql5.5 master 的用戶名是root,無密碼,
slave:10.46.169.62 mysql5.5 slave
的用戶名是root,無密碼,slave登錄master進行同步的賬號是wgdp_syc;
允許slave登錄master:GRANT ALL PRIVILEGES ON *.* TO 'wgdp_syc'@'10.46.169.62'
IDENTIFIED BY 'syc1qaz2wsx' WITH GRANT OPTION; flush privileges;
2.主:
配置master的my.cnf:
[mysqld]
#master configure
server-id = 1
log-bin=mysql-bin
binlog-do-db=master
binlog-ignore-db=mysql
#master configure
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
maser的id應該是1,說明log目錄,同步的數據庫,不允許同步的數據庫
然後在Master上增加一個賬號專門用於同步,如下:
GRANT REPLICATION SLAVE ON *.* TO [email protected] IDENTIFIED BY 'hello';
如果想要在Slave上有權限執行"LOAD TABLE FROM MASTER" 或 "LOAD DATA FROM MASTER"語句的話,必須授予全局的 FILE 和 SELECT 權限:
GRANT FILE,SELECT,REPLICATION SLAVE ON *.* TO [email protected] IDENTIFIED BY 'hello';
接下來備份Master上的數據,首先執行如下SQL語句:
FLUSH TABLES WITH READ LOCK;
然後把同步的數據tar打包,然後scp到227那台機器上,解壓,注意權限問題
整個步驟完成之後,執行
UNLOCK TABLES
3.從:
配置slave的my.cnf:
[mysqld]
#configure master-slave
server-id=2
#master-host=192.168.74.225
#master-user=rep
#master-password=hello
replicate-ignore-db=mysql
replicate-do-db=master
#configure master-slave
注意到slave的配置裡 master-host的三個字段被注釋掉了,因為5.5以後已經廢棄這個配置,這三個字段的設置通過登陸slave的mysql後,執行以下語句:
mysql> CHANGE MASTER TO MASTER_HOST='10.209.112.58',MASTER_USER='wgdp_syc',MASTER_PASSWORD='syc1qaz2wsx',MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=0;
4.啟動主從 mysql後,通過下述命令檢驗是否有問題:
從庫:mysql> SHOW SLAVE STATUS\G;
-
Slave_IO_Running: yes
-
Slave_SQL_Running: Yes 如此就算是差不多了
mysql數據庫同步出錯,跳過:
mysql> slave stop;
Query OK, 0 rows affected (0.01 sec)
mysql> SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1;
Query OK, 0 rows affected (0.00 sec)
mysql> slave start;
Query OK, 0 rows affected (0.00 sec)