You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL主从复制为从库授权时报错:SQL语法错误求助

解决MySQL从库授权时的1064语法错误

嘿,这个问题我之前帮同事排查过,核心原因是你用的MySQL版本(大概率是8.0及以上)已经彻底弃用了GRANT语句里带IDENTIFIED BY PASSWORD的写法,而且从8.0开始,创建用户和授权必须分成两步操作,不能在同一条语句里完成。

为什么会报错?

在MySQL 5.7及更早的版本里,你可以在GRANT语句里同时完成用户创建、密码设置和权限授予,但8.0版本做了权限体系的优化:

  • 移除了GRANT语句中设置密码的语法,不再支持IDENTIFIED BY PASSWORD这种写法
  • 要求必须先创建用户,再单独执行授权操作
  • 另外,就算你用的是明文密码,去掉PASSWORD关键字,8.0也不允许在GRANT里附带密码设置了

正确的操作流程

1. 先创建目标用户(如果用户还不存在)

如果你用明文密码设置,执行这条:

CREATE USER 'root'@'172.17.0.5' IDENTIFIED BY 'root123';

如果你的密码是已经哈希过的密文(比如从旧库导出的密码字符串),可以用这个写法:

CREATE USER 'root'@'172.17.0.5' IDENTIFIED BY PASSWORD '*81F5E21E35407D884A6CD4A731AEBFB6AF209E1B';

(上面的密文是root123的MD5哈希值,你需要替换成自己实际的哈希密码)

2. 给用户授予复制从库所需的权限

GRANT REPLICATION SLAVE ON *.* TO 'root'@'172.17.0.5';

3. 刷新权限(可选,但建议执行)

这一步能让权限变更立即生效:

FLUSH PRIVILEGES;

如果你用的是MySQL 5.7及更早版本

要是你的数据库版本比较旧,也可以用简化的写法(不过还是推荐按分开的步骤来,方便后续升级):

  • 明文密码的情况,去掉PASSWORD关键字:
GRANT REPLICATION SLAVE ON *.* TO root@'172.17.0.5' IDENTIFIED BY 'root123';
  • 哈希密码的情况,保留PASSWORD:
GRANT REPLICATION SLAVE ON *.* TO root@'172.17.0.5' IDENTIFIED BY PASSWORD '*81F5E21E35407D884A6CD4A731AEBFB6AF209E1B';

内容的提问来源于stack exchange,提问作者gann yee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 06:54:14