游客
MySQL 5.7+ root密码过期修复与配置优化(主机实测)

MySQL 5.7+ root密码过期修复与配置优化(主机实测)

一言准备中...

密码过期机制说明

  • MySQL 5.7版本后,mysql.user表结构变更:password字段替换为authentication_string,新增password_expired字段标记密码状态。
  • 默认root密码登录时,检测到password_expired=Y,触发限制:除ALTER USER外,所有语句被拒绝执行。

修复步骤(无验证模式)

1. 停止MySQL服务

  • 命令:systemctl stop mysqlkillall mysql
  • 确保所有进程终止,避免端口占用

2. 跳过授权表启动

  • 执行:mysqld_safe --skip-grant-tables
  • 启动后,MySQL不验证密码,允许无凭证登录

3. 客户端登录

  • 直接执行:mysql -u root
  • 无密码提示,进入后不受password_expired限制

4. 查看用户状态

  • SQL:SELECT authentication_string, password_expired FROM mysql.user WHERE user='root';
  • 确认当前authentication_stringpassword_expired

5. 更新密码与过期标识

  • 命令:UPDATE mysql.user SET authentication_string=PASSWORD('yourpassword'), password_expired='N' WHERE user='root';
  • yourpassword替换为实际新密码

6. 刷新权限

  • FLUSH PRIVILEGES;
  • 使修改立即生效,无需重启

7. 验证结果

  • SQL:SELECT authentication_string, password_expired FROM mysql.user WHERE user='root';
  • password_expired显示为N,表示已禁用过期

8. 正常重启服务

  • 命令:service mysql start
  • 禁止使用--skip-grant-tables参数

9. 新密码登录测试

  • 使用:mysql -u root -p
  • 输入新密码,确认可正常执行查询

配置文件优化(my.cnf)

配置项 作用 参数示例
default_password_lifetime 控制密码过期天数,0为不过期 default_password_lifetime = 0
validate_password_policy 密码强度策略等级,0为低 validate_password_policy=0
validate_password_length 密码最小长度,可设为5 validate_password_length=5
skip-grant-tables 跳过授权验证,仅临时调试 不保留在正式配置中
  • 修改前备份my.cnf
  • 重启服务生效:systemctl restart mysql

主要功能

  • 密码过期状态重置:通过UPDATE直接设置password_expired='N',输入为root用户名,输出为解除语句执行限制
  • 授权表跳过启动:使用--skip-grant-tables参数,输入为MySQL服务进程,输出为无密码登录模式,仅限维护使用
  • 密码强度动态配置:通过validate_password_policyvalidate_password_length调整,输入为0-2等级值,输出为对应密码策略
  • 过期时间全局禁用:设置default_password_lifetime=0,输入为配置文件参数,输出为所有用户密码永不过期
  • 权限刷新机制FLUSH PRIVILEGES命令,输入为已修改的授权表数据,输出为内存中权限缓存同步

如何使用

  • 停止服务后,用mysqld_safe --skip-grant-tables启动
  • 直接登录,执行UPDATE语句修改密码和过期状态
  • 执行FLUSH PRIVILEGES,重启服务
  • 用新密码登录,验证是否可正常执行语句

竞品对比

对比维度 主机实测方案 直接ALTER USER 图形化工具重置
操作路径 停止服务→跳过授权→UPDATE→重启 登录后执行ALTER USER 'root'@'localhost' IDENTIFIED BY 'newpass'; 通过phpMyAdmin等工具,进入用户管理页面修改
适用场景 密码过期导致无法执行任何语句 密码已知但需要修改 有图形界面且MySQL服务正常
依赖条件 需系统root权限、MySQL服务可停 需当前密码有效、能执行SQL 需Web服务器、数据库连接正常
风险等级 中(需停服,有临时无验证窗口) 低(在线操作) 低(图形化操作)
额外步骤 需手动FLUSH PRIVILEGES并重启 自动生效,无需刷新 部分工具自动刷新权限

应用场景

  • 新安装MySQL 5.7+后:首次登录时密码过期,导致无法执行SELECTSHOW DATABASES等操作
  • 密码策略调整后default_password_lifetime配置变更,现有root密码被标记为过期
  • 忘记root密码:结合skip-grant-tables模式,可跳过认证直接重置
  • 批量服务器维护:多台Linux主机需统一处理MySQL root密码过期问题

适用人群

  • Linux运维人员,需管理MySQL 5.7以上版本
  • 数据库管理员,处理密码过期导致的访问故障
  • 开发测试人员,在本地或测试环境初始化MySQL后遇到登录限制
  • 本文作者:站长
  • 本文链接: https://www.zhujishice.cn/174.html
  • 版权声明:本博客所有文章除特别声明外,均默认采用 CC BY-NC-SA 4.0 许可协议。
0
0
  • 支付宝打赏
    支付宝扫一扫
  • 微信打赏
    微信扫一扫
感谢支持
文章很赞!支持一下吧
关于作者
106
0
0
0
内卷太严重,已躺平...

Overlay2 Inode 耗尽故障排查与恢复操作指南

上一篇

Docker镜像与容器导入导出操作详解

下一篇
评论区
内容为空

这一切,似未曾拥有

  • 复制图片
按住ctrl可打开默认菜单