如何为mysql中的数据库授予复制权限?

问题描述 投票:0回答:3

我需要为每个数据库创建一个具有复制从属权限的用户。

当我使用命令时

GRANT replication slave ON `mydb`.* TO 'user';

错误

DB GRANT 和 GLOBAL PRIVILEGES 的错误使用

显示。

有没有办法

GRANT
仅对数据库具有复制权限?

mysql database-replication privileges
3个回答
5
投票

您不能将

GRANT REPLICATION SLAVE
限制为只有一个数据库,因此您必须使用

GRANT REPLICATION SLAVE ON *.* TO 'user'@'host'

但是您可以限制复制本身:

  • 将以下命令放入您的配置文件(my.ini)中 主人奴隶:

--replicate-do-db=db_name

编辑:

由于后者是针对从服务器的,因此很容易被搞乱。因此,您需要使用以下任一方法在主服务器上执行此操作:

[mysqld]

binlog-do-db=replicated_db_name

对于您要复制的数据库

binlog-ignore-db=ignored_db_name

对于您不想复制的数据库

  • 对于这两个命令:要指定多个数据库,请使用此命令 多次选择。

警告:

使用最后两个命令排除服务器上的数据库,其效果是二进制日志文件中不会包含有关它们的任何语句,这将损害备份过程。


0
投票

您应该对所有数据库中的所有表授予REPLICATION SLAVE,如下所示:

GRANT REPLICATION SLAVE ON *.* TO 'user';

实际上,医生说如下:

因为任何静态全局权限都被视为所有数据库的权限,...

并且,您不能仅对所有数据库中的一张表(例如,

REPLICATION SLAVE
)授予
orange
权限,如下所示:

GRANT REPLICATION SLAVE ON *.orange TO 'user';

因此,我们需要对所有数据库(*.*)中的所有表授予静态全局权限,如REPLICATION SLAVEPROCESS

FILE
等,如下所示,否则会出现错误:

GRANT [STATIC_GLOBAL_PRIVILEGES] ON *.* TO <USER>;

-2
投票

你可以试试这个。

$ mysql -h 10.20.30.1 -u user -p
mysql> CREATE USER 'repl_slave'@'10.20.30.%' IDENTIFIED BY 'Passw0rdf0rRepl';
mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl_slave'@'10.20.30.1';
© www.soinside.com 2019 - 2024. All rights reserved.