Ruby on Rails连接MySQL时报错:SQL语法错误(ERROR 1064)
解决MySQL授权语句中IDENTIFIED BY的语法错误问题
嘿,这个问题我之前在配置Rails连接MySQL的时候也碰到过!你的报错是因为MySQL 8.0及以上版本已经不支持在GRANT语句里同时使用IDENTIFIED BY来创建用户了——这是MySQL版本升级后的语法变化,老版本(比如5.x)允许这么写,但新版本把「创建用户」和「授权」拆成了两个独立的操作。
你原来执行的语句是:
GRANT ALL PRIVILEGES ON `simple_development`.* TO 'rails_user'@'localhost' IDENTIFIED BY 'PASSWORD';
得到的错误提示是:
ERROR 1064 (42000):SQL语法有误;请查阅对应MySQL服务器版本的手册,获取在第1行'IDENTIFIED BY "Password"'附近使用的正确语法
正确的操作步骤
你需要分两步来完成:
- 第一步:先创建用户(如果这个用户还不存在的话)
CREATE USER 'rails_user'@'localhost' IDENTIFIED BY 'PASSWORD';
- 第二步:给这个用户授予指定数据库的全部权限
GRANT ALL PRIVILEGES ON `simple_development`.* TO 'rails_user'@'localhost';
- 最后别忘了刷新权限,让设置立即生效
FLUSH PRIVILEGES;
如果rails_user这个用户已经存在了,直接跳过第一步,执行授权和刷新权限的操作就可以啦。这样就能顺利完成Rails用户的数据库授权,解决你的语法错误问题~
内容的提问来源于stack exchange,提问作者Gediyaj
相关产品推荐
相关产品推荐

