Debian MySQL密码策略如何设置
导读:Debian 上 MySQL 密码策略设置指南 一 前置检查与启用验证组件 确认已安装并运行 MySQL/MariaDB:sudo systemctl status mysql(或 mariadb)。 登录数据库:mysql -u roo...
Debian 上 MySQL 密码策略设置指南
一 前置检查与启用验证组件
- 确认已安装并运行 MySQL/MariaDB:sudo systemctl status mysql(或 mariadb)。
- 登录数据库:mysql -u root -p。
- 检查是否安装了密码验证组件(MySQL 5.7/8.0 常见):
SHOW PLUGINS; 或 SHOW VARIABLES LIKE ‘validate_password%’;
若未启用,可在 mysql 客户端中安装(MySQL 5.7/8.0):
INSTALL COMPONENT ‘file://component_validate_password’; - 也可在首次安全初始化时启用:运行 sudo mysql_secure_installation,按提示选择是否启用 VALIDATE PASSWORD COMPONENT(提供低/中/强三种强度)。
二 查看与调整策略参数
- 查看当前策略与长度下限:
SHOW VARIABLES LIKE ‘validate_password%’;
常见变量:validate_password_policy(或 validate_password_check_user_name)、validate_password_length、validate_password_number_count、validate_password_mixed_case_count、validate_password_special_char_count。 - 调整示例(放宽到“低”强度,仅作演示,生产请谨慎):
- MySQL 5.7:
SET GLOBAL validate_password_policy=LOW;
SET GLOBAL validate_password_length=8;
SET GLOBAL validate_password_number_count=1;
SET GLOBAL validate_password_mixed_case_count=1;
SET GLOBAL validate_password_special_char_count=1; - MySQL 8.0(若变量不存在,说明使用新组件,见下一节):
可通过 ALTER USER … REQUIRE 子句控制账户口令策略(复杂度由组件内置,强度级别在组件安装时确定)。
- MySQL 5.7:
- 使设置持久化:将上述 SQL 写入配置文件(如 /etc/mysql/mysql.conf.d/mysqld.cnf 的 [mysqld] 段,使用 init_connect 或 systemd 的 ExecStartPre 执行),或写入 /root/.my.cnf 以便下次自动加载。修改后重启:sudo systemctl restart mysql。
三 密码长度下限的计算规则
- 在 MySQL 5.7 的 validate_password 插件中,长度下限并非可独立设置,它由其他计数项共同决定:
最小长度 ≥ validate_password_number_count + validate_password_special_char_count + 2 × validate_password_mixed_case_count。 - 示例:若要求至少 1 个数字、1 个特殊字符、大小写各至少 1 个,则最小长度为 1+1+2×1=4;若长度设为 4 且满足上述计数,则合法。若你设置的长度低于该计算值,会被自动提升到计算值。
四 账户口令过期与复杂度要求
- 口令过期(MySQL 5.7/8.0 通用):
- 查看:SELECT user,host,password_expired FROM mysql.user;
- 设置单用户过期:ALTER USER ‘alice’@‘localhost’ PASSWORD EXPIRE;
- 全局默认策略(若需统一):SET GLOBAL default_password_lifetime=90; (单位:天;0 表示永不过期)。
- 复杂度与账户锁定(组件与方法):
- 复杂度由 validate_password 组件强制执行(安装时选择低/中/强)。
- 登录失败锁定可用 CONNECTION_CONTROL 插件实现:
- 安装:INSTALL PLUGIN CONNECTION_CONTROL SONAME ‘connection_control.so’;
- 安装状态检查:SHOW PLUGINS LIKE ‘%connection_control%’;
- 设置阈值(示例:失败 5 次后触发,逐步增加延迟):
SET GLOBAL connection_control_failed_connections_threshold=5;
SET GLOBAL connection_control_min_connection_delay=1000; (单位:毫秒)
提示:MariaDB 的密码复杂度与过期机制与 MySQL 略有差异,名称与启用方式可能不同,请以实际版本为准。
五 常见问题与处理
- 修改 root 口令时报错 ERROR 1819(密码不符合当前策略):先降低策略或调低长度/计数要求,再执行修改;必要时先以 debian-sys-maint 登录维护(Debian 系常见做法):
sudo cat /etc/mysql/debian.cnf 查看账户与口令;
mysql -u debian-sys-maint -p 登录后调整策略与口令,再 flush privileges; 。 - 某些场景下需要切换认证插件(例如应用不兼容 caching_sha2_password):
ALTER USER ‘root’@‘localhost’ IDENTIFIED WITH mysql_native_password BY ‘YourNewStrongP@ssw0rd’;
FLUSH PRIVILEGES;
注意:切换插件会影响认证方式与安全性,请评估后再变更。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Debian MySQL密码策略如何设置
本文地址: https://pptw.com/jishu/753106.html
