運行環境:
os: redhat as4
master: MySQL 4.0.23
slave : MySQL 5.0.37
slave日志中報錯信息如下:
060807 11:40:17 [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'
在master上,執行以下語句查看權限:
MySQL>SHOW GRANT FOR 'rep'@'192.168.0.2'\G
*************************** 1. row ***************************
Grants for [email protected]: GRANT SELECT, REPLICATION SLAVE ON
*.* TO 'rep'@'192.168.0.2' IDENTIFIED BY PASSWord 'xxx'
已經授予了 REPLICAION SLAVE 權限了,怎麼還會報這個錯呢?
通過查看手冊和源碼,才知道slave需要執行一個語句來更新slave列表:
SHOW SLAVE HOSTS;
而執行這個語句則需要 REPLICAION CLIENT 權限,因此才會報錯。因此,只要重新給 'rep' 帳號加上 REPLICAION CLIENT 權限就可以了。
另外,在 MySQL 4.0/4.1 等老版本中似乎不存在這樣的問題,因為在這些版本中 REPLICAION CLIENT 權限沒有被用到。