MySQL执行GRANT授权语句报ERROR 1064(42000)语法错误咨询
错误原因
- 触发报错的核心原因是你使用的是MySQL 8.0及以上版本,该版本已经正式移除了
GRANT语句中通过IDENTIFIED BY子句直接创建用户、设置密码的语法支持。这种建用户+授权合并的写法仅在MySQL 5.7及更早版本中兼容,高版本执行时会直接抛出1064语法错误。 - 额外存在语法隐患:MySQL默认用单引号包裹字符串值(用户名、密码、主机地址),如果实例开启了
ANSI_QUOTES模式,双引号包裹的内容会被解析为库、表、列类标识符,也可能导致语法解析失败。
修正方案
高版本MySQL必须拆分「创建用户」和「授权」两个独立操作,完整可正常执行的语句如下:
-- 创建WordPress业务库 CREATE DATABASE wordpress; -- 创建专用访问用户,设置登录密码与允许访问的来源地址 CREATE USER 'wp_user'@'%' IDENTIFIED BY 'stormwind_rules'; -- 为用户分配WordPress库的全部操作权限 GRANT ALL PRIVILEGES ON wordpress.* TO 'wp_user'@'%'; -- 刷新权限表使配置立即生效 FLUSH PRIVILEGES;
补充说明
- 语句中
%代表允许该用户从任意IP发起数据库连接,仅适合本地测试环境使用;生产环境请替换为业务服务所在的具体IP段,缩小访问范围降低安全风险。 - 执行上述操作请使用拥有
CREATE USER、GRANT权限的高权限账号(通常为root账号),否则会触发权限不足报错。
内容的提问来源于stack exchange,提问作者Debabrata mohanty
相关产品推荐
相关产品推荐

