cxl
Published on 2025-11-18 / 5 Visits
0
0

Mysql-root用户忘记密码

今天打开尘封已久的centos7虚拟机,想用下之前里面早已安装好的Mysql数据库,输入了几遍root密码之后发现设置的不是之前熟悉的常用密码,此时只能重置root密码了。

关闭数据库服务

  systemctl status mysqld  # 查看状态是否running
  systemctl stop mysqld    # 是则关闭

编辑mysql配置文件

mysql一般配置文件位于 /etc/my.cnf 编辑此文件在[mysqld]下一行新增 skip-grant-tables 意思是登录时跳过密码验证

重启数据库服务

  systemctl restart mysqld   # 重启  restart 或 start
  systemctl status mysqld  # 启动后查看状态是否running

修改root密码

  mysql -uroot -p    # 使用root用户登录,输入密码时直接回车即可
  ALTER USER 'root'@'localhost' IDENTIFIED BY 'Root@123';  # 修改密码,这里需要符合数据库的密码策略,默认是大小写与特殊符号至少8位
  SHOW VARIABLES LIKE 'validate_password%';  # 查看密码规则列表
  SET GLOBAL validate_password.policy=0;     # 临时设置密码策略,密码策略等级(0=LOW, 1=MEDIUM, 2=STRONG)
  flush privileges;   # 刷新权限

恢复配置并重启数据库服务,输入密码登录即可。

可能遇到错误

ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement

解决:flush privileges;

ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

解决:新密码不符合密码策略,更改密码或修改降低密码策略

ERROR 1396 (HY000): Operation ALTER USER failed for 'root'@'localhost'

解决:因之前设置了root用户允许远程登录,将 ALTER USER 'root'@'localhost' IDENTIFIED BY 'Root@123' 改为 ALTER USER 'root'@'%' IDENTIFIED BY 'Root@123' 即可,或其它之前设置过的某个具体IP地址


Comment