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

MySQL 8创建带密码新用户报错,原5.x语法失效求正确写法

MySQL 8.0 创建用户语法变化及正确操作步骤

没错,MySQL 8.0对用户创建与授权的语法做了明确的拆分调整,你遇到的ERROR 1064就是因为5.x版本的合并语法在8.0中被废弃了。

为什么旧命令失效?

在MySQL 5.x中,GRANT语句可以同时完成用户创建和权限授予两个操作,但从8.0开始,官方将这两个操作拆分成独立步骤——IDENTIFIED BY子句不再允许出现在GRANT语句里,必须通过单独的CREATE USER语句来创建用户,再用GRANT进行授权。这一变化是为了让权限管理逻辑更清晰,同时配合8.0对权限表结构的优化。

MySQL 8.0 创建新用户的正确流程

  1. 第一步:创建用户
    使用CREATE USER语句创建用户,指定用户名、主机和密码:

    CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
    
    • username是你要创建的用户名
    • localhost表示仅允许本地登录,如果需要远程登录可以替换为'%'(允许所有主机)或者指定具体IP
    • password是用户的登录密码
  2. 第二步:授予权限
    用户创建完成后,再用GRANT语句为其分配权限:

    GRANT ALL PRIVILEGES ON *.* TO 'username'@'localhost';
    
    • ALL PRIVILEGES表示授予所有权限,你也可以根据需求指定具体权限(比如SELECT, INSERT)
    • *.*表示所有数据库的所有表,可替换为具体的库表(比如mydb.*)
  3. (可选)刷新权限
    虽然在大多数情况下,8.0会自动加载权限变更,但如果遇到权限不生效的情况,可以执行:

    FLUSH PRIVILEGES;
    

验证操作是否成功

  • 查看已创建的用户:
    SELECT user, host FROM mysql.user;
    
  • 查看用户的权限:
    SHOW GRANTS FOR 'username'@'localhost';
    

补充说明

如果你需要创建带特殊需求的用户(比如密码过期策略、权限限制),可以在CREATE USER语句中添加额外参数,例如:

CREATE USER 'username'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE INTERVAL 90 DAY;

内容的提问来源于stack exchange,提问作者Akshay Pethani

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:27:03