我需要为每个数据库创建一个具有复制从属权限的用户。
当我使用命令时
GRANT replication slave ON `mydb`.* TO 'user';
错误
DB GRANT 和 GLOBAL PRIVILEGES 的错误使用
显示。
有没有办法
GRANT
仅对数据库具有复制权限?
您不能将
GRANT REPLICATION SLAVE
限制为只有一个数据库,因此您必须使用
GRANT REPLICATION SLAVE ON *.* TO 'user'@'host'
但是您可以限制复制本身:
--replicate-do-db=db_name
由于后者是针对从服务器的,因此很容易被搞乱。因此,您需要使用以下任一方法在主服务器上执行此操作:
[mysqld]
binlog-do-db=replicated_db_name
对于您要复制的数据库
binlog-ignore-db=ignored_db_name
对于您不想复制的数据库
使用最后两个命令排除服务器上的数据库,其效果是二进制日志文件中不会包含有关它们的任何语句,这将损害备份过程。
您应该对所有数据库中的所有表授予REPLICATION SLAVE,如下所示:
GRANT REPLICATION SLAVE ON *.* TO 'user';
实际上,医生说如下:
因为任何静态全局权限都被视为所有数据库的权限,...
并且,您不能仅对所有数据库中的一张表(例如,
REPLICATION SLAVE
)授予 orange
权限,如下所示:
GRANT REPLICATION SLAVE ON *.orange TO 'user';
因此,我们需要对所有数据库(*.*
)中的所有表授予静态全局权限,如REPLICATION SLAVE、PROCESS、
FILE等,如下所示,否则会出现错误:
GRANT [STATIC_GLOBAL_PRIVILEGES] ON *.* TO <USER>;
你可以试试这个。
$ 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';