在MySQL主从复制环境中,配置一个专用的复制账号并赋予正确的权限是确保数据同步正常运行的关键步骤。这个账号用于从库连接主库,读取二进制日志(binlog)内容,实现数据复制。下面详细介绍如何创建和配置MySQL复制账号权限。
创建复制账号
登录到MySQL主服务器,使用具有管理员权限的账号(如root)执行以下命令来创建一个用于复制的专用用户:
CREATE USER 'repl'@'%' IDENTIFIED BY 'your_password';
其中 repl 是用户名,% 表示允许从任意IP连接(生产环境建议限制为从库IP),your_password 应替换为强密码。
授予复制权限
复制账号需要具备 REPLICATION SLAVE 权限,这是MySQL中专门用于主从复制的权限类型。执行以下命令授权:
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
该权限允许该用户读取主库的二进制日志并用于复制。注意:不需要赋予其他如SELECT、INSERT等数据操作权限。
授权完成后,刷新权限表以使更改生效:
FLUSH PRIVILEGES;
验证账号配置
可在从库或通过远程连接测试该账号是否能正常登录:
mysql -u repl -p -h [主库IP]
登录成功后,可通过以下命令查看用户权限确认是否正确:
SHOW GRANTS FOR 'repl'@'%';
输出应包含:GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%'
配置文件与安全建议
建议在主库的 my.cnf 中启用二进制日志和server-id,例如:[mysqld] server-id = 1 log-bin = mysql-bin从库需设置不同的 server-id(如2),避免冲突。 生产环境中,将 'repl'@'%' 改为 'repl'@'从库IP',提高安全性。 定期审查复制账号状态,避免长期未使用或密码泄露。
基本上就这些。只要账号创建正确、权限授予准确,并在网络层面允许连接,MySQL复制就能顺利建立。不复杂但容易忽略细节,比如server-id重复或防火墙阻断3306端口。
