在MySQL 5.7中如何配置validate_password插件提升安全性

浅萱吖_9500

浅萱吖_9500

2026-09-04

350人浏览

原创

插件未加载是密码策略失效的主因,需先执行install plugin并验证information_schema.plugins;配置文件参数名须全小写、下划线分隔、无点号;strong策略需指定有效字典文件路径且mysql进程有读权限;策略仅作用于create/alter user ... identified by语句。

在mysql 5.7中如何配置validate_password插件提升安全性

插件没加载,所有配置都白设

直接执行 SET GLOBAL validate_password_length = 8 却发现没效果?先别调参数——90% 的问题出在插件根本没加载。MySQL 5.7 默认不启用 validate_password,SHOW VARIABLES LIKE 'validate_password%' 返回空结果就是铁证。

确认方式只有一条:运行 SELECT * FROM information_schema.plugins WHERE plugin_name = 'validate_password';。如果没返回任何行,说明插件未安装或未激活。

  • 加载命令必须用 INSTALL PLUGIN validate_password SONAME 'validate_password.so';(Linux/macOS)或 'validate_password.dll'(Windows)
  • 加载后立即查 information_schema.plugins 表,不能只信 SHOW PLUGINS ——后者可能显示状态为 ACTIVE 但实际未生效
  • 加载失败常见原因是 plugin_dir 路径不对,可查 SELECT @@plugin_dir; 确认路径是否存在 validate_password.so 文件

配置文件里参数名写错就等于没配

my.cnf 中写 validate_password.policy = MEDIUM 或 validate_password_length=12?全无效。5.7 配置文件要求严格使用下划线+小写格式,且不能带点号。

正确写法只有一种:validate_password_length、validate_password_policy、validate_password_number_count……全部小写、下划线分隔、无点号。

  • validate_password_policy 值填数字(0/1/2)或字符串(LOW/MEDIUM/STRONG),推荐用数字,避免大小写敏感问题
  • validate_password_length 有硬性下限:必须 ≥ validate_password_number_count + validate_password_special_char_count + 2 × validate_password_mixed_case_count,否则启动报错
  • 改完 my.cnf 必须重启 MySQL,SET GLOBAL 只影响当前实例,重启即丢失

STRONG 级别不配字典文件,实际就是 MEDIUM

设了 validate_password_policy = 2 却发现弱密码还是能过?因为 STRONG 级别强制校验字典文件,而默认 validate_password.dictionary_file 是空字符串,插件会跳过字典检查,退化为 MEDIUM 行为。

Proxmox Create Vm
Proxmox Create Vm

在 Proxmox VE 上创建 Ubuntu 24.04 LXC 容器或完整虚拟机,兼容 Docker‑ready 与 Compose v2,处理 Docker‑in‑LXC 嵌套,自动选择下一个可用的 CTID。

下载

要真正启用 STRONG,必须指定一个有效路径并确保文件可读:

  • 先创建字典文件,比如 /etc/mysql/password_dict.txt,每行一个禁止词(如 password、admin、mysql)
  • 在 my.cnf 中加一行:validate_password_dictionary_file = /etc/mysql/password_dict.txt
  • MySQL 进程必须有该文件的读权限(非 root 启动时尤其注意)
  • 验证是否生效:执行 SELECT @@validate_password_dictionary_file;,返回路径不为空且可访问才算成功

策略只在 CREATE/ALTER USER 时触发,不扫旧账号

很多人启用后立刻去试 ALTER USER 'root'@'localhost' IDENTIFIED BY '123456'; 报错,就以为策略生效了;但反过来用 SET PASSWORD FOR 'root'@'localhost' = '123456'; 却成功——这是对作用边界的误解。

validate_password 插件只介入以下两类语句:

  • CREATE USER ... IDENTIFIED BY
  • ALTER USER ... IDENTIFIED BY

它完全不拦截 SET PASSWORD、不校验初始 root 密码、也不重检已存在用户的密码强度。另外,validate_password_check_user_name = ON(默认)还会拒绝用户名作为密码子串,比如用户叫 app_user,密码含 app_user 就会被拦。

最易被忽略的一点:远程用户创建失败常被归因为网络或权限,其实八成是密码不满足策略,错误码固定为 ERROR 1819 (HY000),看到这个就该先查策略是否真启用了。

相关专题

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

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

2023.10.12

4063

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

1049

5

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

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

2024.03.06

5921

10

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

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

2024.03.06

2823

4

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

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

2024.04.07

5900

11

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

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

2024.04.29

7861

6

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

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

2024.04.29

1070

5

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

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

2024.04.29

932

5

热门下载

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

精品课程

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

共1课时 | 181人学习

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

共2课时 | 287人学习