今天打开尘封已久的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地址