发现在 MySQL master 上用 GRANT 语句授予用户权限和用 REVOKE 语句收回权限的操作没有被同步到 slave 上,有两个 bug 报告的行为和我遇到的一致: #25482 #50460,但从文档看,#25482 描述的是 bug,而 #50460 描述的内容则是 MySQL 的预期行为。
这里 和
这里 描述了 MySQL 如何判定是否要写 binlog,对于我遇到的问题,原因是做 GRANT/REVOKE 操作时没有选择默认数据库,而 MySQL 在没有默认数据库的情况下根本就不会把 GRANT/REVOKE 操作写入 binlog,当然也就不会被同步到 slave 上,要解决这个问题,在 GRANT/REVOKE 之前 USE
任意没有被 --replicate-ignore-db
忽略的数据库即可。