gpt4 book ai didi

复制中的 mysql 数据库,但在主服务器上创建的用户未在从服务器上复制

转载 作者:可可西里 更新时间:2023-11-01 07:48:20 24 4
gpt4 key购买 nike

在主从复制中,我们使用 mysql 数据库在从服务器上复制一些数据库。我在主服务器上创建了一个用户,不幸的是它没有在从服务器上复制。

Replicate_Do_DB: app1,app2,mysql

用户创建命令:

GRANT SELECT on *.* to 'user1'@'localhost' identified by 'user1';

GRANT SELECT on *.* to 'user1'@'%' identified by 'user1';

GRANT SELECT on *.* to 'user1'@'10.10.10.10' identified by 'user1';

用户帐户在主服务器上成功创建但未在从服务器上复制。

如果 mysql 数据库处于复制状态,为什么会发生这种情况?

最佳答案

嗯。我要在这里赌一下,你可能正在使用基于 STATEMENT 的复制而不是基于 ROW BASED 的复制,并且你的 MySQL 版本是 5.1 或更高版本......

您可以通过在您的从站上运行以下 SQL 来判断您正在运行的是哪种类型:

select variable_value
from information_schema.session_variables
where upper(variable_name) = 'BINLOG_FORMAT';

正如您已经正确识别的那样,只有在 mysql schema is included in replication 时才会复制权限。

然而,“陷阱!”这是 --replicate-do-db选项。如果您使用的是基于语句的复制,那么您需要在运行授权之前将 mysql 数据库指定为默认数据库,因为:

The effects of this option depend on whether statement-based or row-based replication is in use.

Statement-based replication. Tell the slave SQL thread to restrict replication to statements where the default database (that is, the one selected by USE) is db_name.

也就是说尝试运行:

USE MYSQL;

GRANT SELECT on *.* to 'user1'@'localhost' identified by 'user1';

GRANT SELECT on *.* to 'user1'@'%' identified by 'user1';

GRANT SELECT on *.* to 'user1'@'10.10.10.10' identified by 'user1';

它可能会起作用。如果没有,请查看另一个答案!

关于复制中的 mysql 数据库,但在主服务器上创建的用户未在从服务器上复制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12086049/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com