REPLICATION SLAVE权限必须在主库授予且仅对ON .有效,GTID模式下还需REPLICATION CLIENT;用户需匹配从库真实出口IP,密码不过期,主库bind-address不能为127.0.0.1,防火墙须放行3306端口。

REPLICATION SLAVE权限必须在主库执行,不能配在从库
从库的 I/O 线程是主动连接主库拉取 binlog 的,它用的是 CHANGE REPLICATION SOURCE TO 里指定的 SOURCE_USER 和 SOURCE_PASSWORD。这个用户必须能在主库完成身份验证,并有权限读取 binlog 文件。权限配在从库、或复用业务账号,都会直接失败,现象就是 SHOW SLAVE STATUS\G 中 IO_Running: No,Last_IO_Error 显示 Access denied for user 'repl'@'xxx'。
GRANT REPLICATION SLAVE ON *.* 是唯一合法写法
该权限只对全局生效,不能限定库或表——比如 ON mydb.* 或 ON *.* TO 'repl'@'localhost' 都会静默忽略,导致授权看似成功实则无效。
-
REPLICATION SLAVE必须搭配ON *.*,缺一不可 - 用户名和主机段区分大小写:
'Repl_User'@'192.168.10.%'和'repl_user'@'192.168.10.%'是两个不同账号 - 密码只出现在
CREATE USER或ALTER USER中;GRANT ... BY 'pass'是常见手误,语法错误
GTID 模式下必须额外加 GRANT REPLICATION CLIENT
如果主库启用了 GTID(gtid_mode = ON),从库初始化时会执行 SHOW MASTER STATUS 获取初始位点,这需要 REPLICATION CLIENT 权限。只给 REPLICATION SLAVE 会导致报错:Access denied; you need REPLICATION CLIENT privilege。
安装、修复、更新或打包一个基于 Python 和 PyMySQL 实现的 Windows `mysql` 命令。适用于用户希望在 PowerShell/CMD 中输入 `mysql` 时重定向到 Python 实现、需要交互式输入 MySQL 连接信息、需要同步到当前用户本地 bin 目录,或需要将该能力封装成可公开复用的 Codex skill。
- 必须执行两条
GRANT:一条REPLICATION SLAVE ON *.*,一条REPLICATION CLIENT ON *.* - 主机段必须一致,且匹配从库真实出口 IP,例如
'repl_user'@'192.168.10.50'或'repl_user'@'192.168.10.%' - MySQL 8.0+ 默认认证插件是
caching_sha2_password,旧版客户端(如 MySQL 5.7)可能握手失败,需显式指定IDENTIFIED WITH mysql_native_password
主机段写成 '%' 是高危操作,生产环境禁用
用 'repl'@'%' 虽然方便,但等于允许任意 IP 连接主库 3306 端口,严重违反最小权限原则。MySQL 8.0+ 更会直接拒绝该账号与 caching_sha2_password 插件配合使用。
- 推荐精确到子网:
'repl_user'@'192.168.10.%',或更严格到单 IP:'repl_user'@'192.168.10.50' - 主库
bind-address不能是127.0.0.1,否则远程连接被拒;应设为0.0.0.0或具体内网地址 - MySQL 8.0 默认
default_password_lifetime = 360,复制账号密码过期后,REPLICATION SLAVE权限会被静默禁用;建号时建议加PASSWORD EXPIRE NEVER
实际最易被忽略的一点:即使所有 SQL 授权都正确,只要主库防火墙没放行从库 IP 的 3306 入站、或网络路由不通、或 bind-address 配错,IO_Running: No 就必然发生——权限只是必要条件,不是充分条件。










