mysql主从复制如何配置复制账号_mysql授权配置方法

来源:这里教程网 时间:2026-02-28 20:45:46 作者:

复制账号必须只给
REPLICATION SLAVE
权限

复制账号不是普通业务账号,它唯一作用是让从库读取主库的 binlog,因此权限越小越安全。只要授予

REPLICATION SLAVE
就够用,多加任何权限(比如
SELECT
ALL PRIVILEGES
REPLICATION CLIENT
)都是冗余且危险的。

GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.1.11'
—— 推荐限定从库 IP,不用
'%'
切勿执行
GRANT ALL ON *.*
GRANT REPLICATION SLAVE, SUPER
这类组合
如果误授了多余权限,用
REVOKE ALL PRIVILEGES ON *.* FROM 'repl'@'192.168.1.11'
先清空,再重授
授完务必运行
FLUSH PRIVILEGES
,否则权限不生效

MySQL 8.0+ 创建用户时要注意认证插件

MySQL 8.0 默认使用

caching_sha2_password
插件,而旧版客户端或某些中间件可能不兼容,导致从库连不上主库,报错类似
Authentication plugin 'caching_sha2_password' cannot be loaded

创建账号时显式指定插件更稳妥:
CREATE USER 'repl'@'192.168.1.11' IDENTIFIED WITH mysql_native_password BY 'StrongPass123!'
若已创建但连接失败,可修改:
ALTER USER 'repl'@'192.168.1.11' IDENTIFIED WITH mysql_native_password BY 'StrongPass123!'
密码强度策略(如
validate_password_policy
)会影响建号,临时调低可用:
SET GLOBAL validate_password_policy = LOW
,但仅用于测试环境

账号网络可达性比语法更重要

很多“授权失败”实际是网络或防火墙问题:账号建对了、权限给了、密码也对,但从库就是连不上主库。

先在从库机器上手动测试连通性:
mysql -h 192.168.1.10 -u repl -p
—— 成功登录才说明账号和网络都 OK
检查主库是否监听公网地址:确认
bind-address
没被设成
127.0.0.1
(应为
0.0.0.0
或具体内网 IP)
确认防火墙放行 3306:
firewall-cmd --permanent --add-port=3306/tcp && firewall-cmd --reload
(CentOS)或对应系统命令
云服务器还要检查安全组规则,开放入方向 TCP 3306

SHOW MASTER STATUS
的输出要和
CHANGE MASTER TO
严格一致

从库配置复制关系时,

master_log_file
master_log_pos
必须完全匹配主库当前 binlog 状态,哪怕差一个字节都会导致 IO 线程启动失败,报错如
Got fatal error 1236 from master

在主库执行
SHOW MASTER STATUS
后立刻记录
File
Position
值,不要做任何写操作再查
文件名注意大小写和扩展名:例如
mysql-bin.000004
MYSQL-BIN.000004
mysql-bin.00004
位置值是整数,不能带逗号或单位;若为 0,说明 binlog 刚清空或新启,此时从库需跳过初始数据同步(如已有全量备份)

复制账号本身不难配,真正卡住人的往往是权限粒度没控好、认证插件不兼容、网络不通,或者 binlog 位点抄错了。尤其在 MySQL 8.0+ 环境下,

mysql_native_password
server-id
冲突这两点,几乎必踩一次。

相关推荐