我想更改主数据库上的 MySQL 数据库密码。我的问题是:更改主数据库密码时,我们是否需要关注从属数据库?
答案1
来自文档
仅当复制 mysql 数据库时,才会复制用户权限。也就是说,仅当复制设置包含 mysql 数据库时,GRANT、REVOKE、SET PASSWORD、CREATE USER 和 DROP USER 语句才会在从属服务器上生效。
如果您要复制所有数据库,但不希望复制影响用户权限的语句,请使用选项将从属服务器设置为不复制 mysql 数据库
--replicate-wild-ignore-table=mysql.%
。从属服务器识别出与权限相关的 SQL 语句没有影响,因此它不会执行这些语句。请参阅第 16.4.1.16 节,“mysql 系统数据库的复制“, 了解更多信息。
答案2
这确实取决于情况。:)
根据文档
MySQL 5.1.14 及更高版本。对 mysql 数据库中的表进行的数据修改语句将根据 binlog_format 的值进行复制;如果该值为 MIXED,则使用基于行的格式复制这些语句。但是,通常会间接更新此信息的语句(例如 GRANT、REVOKE 以及操作触发器、存储例程和视图的语句)将使用基于语句的复制复制到从属服务器。
MySQL 5.1.13 及更早版本。仅当复制 mysql 数据库时,才会复制用户权限。也就是说,仅当复制设置包含 mysql 数据库时,GRANT、REVOKE、SET PASSWORD、CREATE USER 和 DROP USER 语句才会在从属服务器上生效。
对于我们的实例,即使我们没有进行复制,mysql 5.5 也会在从服务器上自动创建/删除用户 xxx@'xxx'mysql系统数据库。
答案3
这取决于您是否正在从属“mysql”数据库,即保存所有用户权限的内部 mysql db。如果复制用户已被授予“*.*”的访问权限,则“mysql.*”中的所有表都应复制,包括存储密码的“mysql.user”。
当对这些表进行更改时,应执行“刷新权限”,因此可能需要在从属服务器上运行此操作?我总是为复制指定特定的数据库,所以我没有测试过这个。