来源:http://imysql.cn 实验环境如下: 操作系统: redhat as4 Mysql的master端版本: MySQL 4.0.23 Mysql的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上看看,执行以下sql语句来查看权限:
mysql>SHOW GRANT FOR 'rep'@'192.168.0.2'\G *************************** 1. row *************************** Grants for rep@192.168.0.2: GRANT SELECT, REPLICATION SLAVE ON *.* TO 'rep'@'192.168.0.2' IDENTIFIED BY PASSWORD 'xxx'
不是吧,"rep"用户已经授予了 REPLICAION SLAVE 权限了,怎么还会报错呢? 于是通过查看mysql手册和源码,才知道slave是需要执行一个语句来更新slave列表:
mysql>SHOW SLAVE HOSTS;
而执行这个sql语句则需要有 REPLICAION CLIENT 权限,所以才会报错。因此,只要重新给 'rep' 帐号加上 REPLICAION CLIENT 权限就可以了。
mysql>GRANT SELECT, REPLICATION SLAVE,REPLICAION CLIENT ON *.* TO rep@rep2 IDENTIFIED BY 'rep';
值得注意的是,在 MySQL的4.0/4.1等老版本中似乎不存在这样的问题,因为在这些版本中没有用到 REPLICAION CLIENT 权限。 |