MySQL 8.0如何使用CREATE USER创建账号

胖宇君_8593

胖宇君_8593

2026-08-25

598人浏览

原创

mysql 8.0中create user失败主因是validate_password插件拦截弱密码、caching_sha2_password认证插件不兼容旧客户端,以及host未显式指定;需先show variables like 'validate_password%'查策略,再set global validate_password.policy=low等调低要求,并显式指定identified with mysql_native_password方可成功建户。

mysql 8.0如何使用create user创建账号

MySQL 8.0 中 CREATE USER 不是“输完就完事”,必须处理密码策略、认证插件和 host 匹配三件事,否则连建都建不成功。

CREATE USER 报 ERROR 1819:密码不满足策略要求

这是最常见卡点——不是语法错,是 MySQL 8.0 默认启用了 validate_password 插件,密码太短、缺大小写或特殊字符就会直接拒绝。错误信息形如:ERROR 1819 (HY000): Your password does not satisfy the current policy requirements。

实操建议:

create-podcast-episode-from-blog-post
create-podcast-episode-from-blog-post

将书面内容转为配有AI朗读和原创片头/片尾音乐的播客,用于把博客文章重新利用为音频内容。

下载
  • 先查当前策略:SHOW VARIABLES LIKE 'validate_password%';,重点关注 validate_password.policy(0=LOW,1=MEDIUM,2=STRONG)
  • 测试环境可临时降级:SET GLOBAL validate_password.policy = LOW;(注意:仅会话级生效,重启失效)
  • 生产环境别关策略,改用合规密码:至少 8 位,含大小写字母 + 数字 + 特殊字符,例如 'MyDB@2026!'
  • 空密码在 MySQL 8.0+ 完全禁止,IDENTIFIED BY '' 会报错

客户端连不上:caching_sha2_password 插件不兼容

用户能建成功,但 Python、PHP 或老版 Navicat 死活连不上,报错类似:Client does not support authentication protocol——大概率是默认的 caching_sha2_password 插件惹的祸。

实操建议:

  • 旧客户端(如 MySQL Connector/J 5.x、PyMySQL CREATE USER 'app'@'%' IDENTIFIED WITH mysql_native_password BY 'MyDB@2026!';
  • 确认插件是否生效:SELECT plugin FROM mysql.user WHERE User = 'app' AND Host = '%';,结果应为 mysql_native_password
  • 新项目且客户端明确支持 SHA2(如 MySQL Shell、Connector/J 8.0+),可保留默认:CREATE USER 'api'@'localhost' IDENTIFIED BY 'MyDB@2026!';

host 写成 '%' 却连不了本地?localhost 和 127.0.0.1 是两个账号

执行了 CREATE USER 'dev'@'%',命令行用 mysql -u dev -p 能连,但程序用 127.0.0.1 就报 Access denied——因为 MySQL 把 'dev'@'localhost' 和 'dev'@'%' 当作完全独立的账号,而 Unix socket 连接(无 host 指定时)默认走 localhost,TCP 连接走 127.0.0.1 或 %。

实操建议:

  • 若需本机 TCP 连接(比如 Docker 容器内连宿主机),必须显式创建 'dev'@'127.0.0.1' 或 'dev'@'localhost'(后者只接受 socket)
  • 想统一覆盖本地所有方式?建两个:CREATE USER 'dev'@'localhost' ... 和 CREATE USER 'dev'@'127.0.0.1' ...
  • 生产环境禁用 'user'@'%',改用具体网段如 'app'@'192.168.10.%',避免暴露到公网

CREATE USER 后权限仍不生效:GRANT 和 FLUSH PRIVILEGES 的关系

CREATE USER 只建账号,不带任何权限;GRANT 才真正赋权。但很多人授完权还连不上,是因为没理清权限层级或忽略刷新动作。

实操建议:

  • GRANT SELECT ON mydb.* TO 'dev'@'localhost'; 允许查 mydb 下所有表,但 USE mydb; 仍可能失败——因为 USAGE 权限(连接能力)虽隐式存在,但数据库级操作(如 USE)依赖 SELECT 等对象权限是否覆盖当前库
  • 最小权限起步:不要用 GRANT ALL PRIVILEGES ON *.*,限定到具体库甚至表:GRANT SELECT, INSERT ON app.orders TO 'app'@'192.168.10.%';
  • MySQL 8.0+ 中 GRANT 会自动重载权限表,FLUSH PRIVILEGES; 非必需;但如果你手动改过 mysql.user 表,就必须执行它
  • 验证权限是否到位:SHOW GRANTS FOR 'dev'@'localhost';

最容易被忽略的是 host 匹配的精确性——MySQL 查权限时按 User@Host 字符串逐字匹配,'user'@'localhost' 和 'user'@'127.0.0.1' 完全不互通,连错 host 就等于连错账号。

相关专题

更多
数据分析工具有哪些
数据分析工具有哪些

数据分析工具有Excel、SQL、Python、R、Tableau、Power BI、SAS、SPSS和MATLAB等。详细介绍:1、Excel,具有强大的计算和数据处理功能;2、SQL,可以进行数据查询、过滤、排序、聚合等操作;3、Python,拥有丰富的数据分析库;4、R,拥有丰富的统计分析库和图形库;5、Tableau,提供了直观易用的用户界面等等。

2023.10.12

3943

8

SQL中distinct的用法
SQL中distinct的用法

SQL中distinct的语法是“SELECT DISTINCT column1, column2,...,FROM table_name;”。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.27

851

4

SQL中months_between使用方法
SQL中months_between使用方法

在SQL中,MONTHS_BETWEEN 是一个常见的函数,用于计算两个日期之间的月份差。想了解更多SQL的相关内容,可以阅读本专题下面的文章。

2024.02.23

1029

5

SQL出现5120错误解决方法
SQL出现5120错误解决方法

SQL Server错误5120是由于没有足够的权限来访问或操作指定的数据库或文件引起的。想了解更多sql错误的相关内容,可以阅读本专题下面的文章。

2024.03.06

5801

10

sql procedure语法错误解决方法
sql procedure语法错误解决方法

sql procedure语法错误解决办法:1、仔细检查错误消息;2、检查语法规则;3、检查括号和引号;4、检查变量和参数;5、检查关键字和函数;6、逐步调试;7、参考文档和示例。想了解更多语法错误的相关内容,可以阅读本专题下面的文章。

2024.03.06

2723

4

oracle数据库运行sql方法
oracle数据库运行sql方法

运行sql步骤包括:打开sql plus工具并连接到数据库。在提示符下输入sql语句。按enter键运行该语句。查看结果,错误消息或退出sql plus。想了解更多oracle数据库的相关内容,可以阅读本专题下面的文章。

2024.04.07

5780

11

sql中where的含义
sql中where的含义

sql中where子句用于从表中过滤数据,它基于指定条件选择特定的行。想了解更多where的相关内容,可以阅读本专题下面的文章。

2024.04.29

7661

6

sql中删除表的语句是什么
sql中删除表的语句是什么

sql中用于删除表的语句是drop table。语法为drop table table_name;该语句将永久删除指定表的表和数据。想了解更多sql的相关内容,可以阅读本专题下面的文章。

2024.04.29

1050

5

sql中删除一列的命令是什么
sql中删除一列的命令是什么

在sql中,使用alter table语句可以删除一列,语法为:alter table table_name drop column column_name。想了解更多sql的相关内容,可以阅读本专题下面的文章。

2024.04.29

912

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL vs MySQL
PostgreSQL vs MySQL

共1课时 | 178人学习

使用phpenv集成环境安装极致CMS
使用phpenv集成环境安装极致CMS

共2课时 | 282人学习