環境:Master MySQL 4.0.23,Slave MySQL 5.0.37(跨大版本複製)。
Slave 錯誤日誌循環報錯:
[ERROR] While trying to obtain the list of slaves from the master 'xxx.xxx.xxx:3306',
user 'rep' got the following error:
'Access denied. You need the REPLICATION SLAVE privilege for this Operation'
SHOW GRANTS FOR 'rep'@'192.168.0.2'\G
-- 結果:
GRANT SELECT, REPLICATION SLAVE ON *.* TO 'rep'@'192.168.0.2' IDENTIFIED BY PASSWORD 'xxx'
已顯式授予 REPLICATION SLAVE,理應足夠。
SHOW SLAVE HOSTS 以更新已知 Slave 列表(用於 Master 端 SHOW SLAVE HOSTS 輸出)。SHOW SLAVE HOSTS 需要 REPLICATION CLIENT 權限,而非 REPLICATION SLAVE。REPLICATION CLIENT,故舊版本 Master 不會報錯;5.0+ Slave 連接舊版 Master 觸發此邏輯差異。-- 在 Master 上補充授權
GRANT REPLICATION CLIENT ON *.* TO 'rep'@'192.168.0.2';
FLUSH PRIVILEGES;
授權後 Slave 錯誤日誌不再報錯,複製恢復正常。
| 權限 | 用途 | 典型授予對象 |
|---|---|---|
REPLICATION SLAVE | 允許從庫連接主庫、請求 binlog 事件、執行 SHOW MASTER STATUS、SHOW BINLOG EVENTS | 複製賬號(必須) |
REPLICATION CLIENT | 允許執行 SHOW MASTER STATUS、SHOW SLAVE HOSTS、SHOW SLAVE STATUS(查看而非發起複製) | 監控賬號、從庫賬號(5.0+ 建議同授) |
SUPER | 包含上述權限,另允許 KILL 線程、CHANGE MASTER、PURGE BINARY LOGS 等高危操作 | DBA/運維賬號,複製賬號不建議授予 |
CREATE USER 'repl'@'10.0.0.%' IDENTIFIED BY 'StrongReplPass!';
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'repl'@'10.0.0.%';
FLUSH PRIVILEGES;
Seconds_Behind_Master、Slave_IO_Running、Slave_SQL_Running、Relay_Log_Space,設置告警閾值。REPLICATION SLAVE、REPLICATION CLIENT,嚴禁 SUPER、FILE、SHUTDOWN 等高危權限。