首页主机资讯Debian MySQL密码策略如何设置

Debian MySQL密码策略如何设置

时间2025-11-21 11:16:03发布访客分类主机资讯浏览1001
导读: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 子句控制账户口令策略(复杂度由组件内置,强度级别在组件安装时确定)。
  • 使设置持久化:将上述 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
Debian环境中env变量如何持久化 Debian MySQL主从复制配置步骤

游客 回复需填写必要信息