对于MySQL 5.6,我有一个简单的主从设置,每当我对mysql.user表进行更改时,它都会失败。主服务器被设置为复制两个数据库,这两个数据库都不是mysql数据库。binlog_format设置为行。
我有一个选择的MySQL用户设置在主机上,供不同的同事对数据库进行更改,但在从服务器上,我只有一个用户,即web服务器。
当我试图从主服务器中删除冗余用户时,从服务器失败了以下消息:
Error 'Operation DROP USER failed for 'mysql_user'@'localhost'' on query. Default database: ''. Query: 'DROP USER 'mysql_user'@'localhost''我不想一直跳过错误,因为我会不时地对mysql.user表进行更改,而且很容易忘记检查复制是否仍在进行。我没有任何复制的监视设置,所以有几次我对mysql表进行了更改,有几个小时没有人注意到,这影响了我们的生产web服务器。
任何帮助都很感激。
发布于 2017-07-27 13:42:03
注意错误消息的部分:'mysql_user'@'localhost''
本地词后面有两个引号。当此语句复制时,从数据库服务器无法找到用户并停止复制。MySQL 5.7有DROP USER IF EXISTS user表单,但是在MySQL 5.6中,最好不要犯这样的错误,或者更喜欢直接编辑mysql数据库。
更新:当您对将MySQL帐户从主服务器复制到从服务器到从服务器不感兴趣时,您可能希望将replicate-ignore-db=mysql添加到每个从服务器上的米舍尔德部分。我更喜欢在从站进行过滤,因为主程序二进制日志的更改对将来的故障排除有潜在的价值。
https://serverfault.com/questions/865487
复制相似问题