MySQL忘记密码重置密码
步骤1:停止MySQL服务
首先,停止MySQL服务。这是为了能够在不验证密码的情况下启动MySQL。
sudo systemctl stop mysqld
步骤2:跳过权限表启动MySQL
启动MySQL时跳过权限表,这允许你以root身份登录而无需密码。使用以下命令:
sudo mysqld_safe --skip-grant-tables &
或者,如果你的系统不支持 mysqld_safe
,可以直接使用 mysqld
:
sudo mysqld --skip-grant-tables &
或者,在数据库参数文件my.cnf中加入:
vim /etc/my.cnf# 在[mysqld] 加上一行skip-grant-tables
步骤3:登录MySQL
在另一个终端窗口中,以root用户身份登录MySQL,不需要密码:
mysql -u root
步骤4:更改root密码
一旦登录MySQL,执行以下SQL语句来更改root密码:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';FLUSH PRIVILEGES;
将 new_password
替换为你想要设置的新密码。
步骤5:退出MySQL
执行 exit
命令退出MySQL命令行:
exit;
步骤6:停止MySQL服务(如果使用mysqld_safe启动)
如果你使用了 mysqld_safe
启动MySQL,现在需要停止MySQL服务,然后重新正常启动它:
sudo systemctl stop mysql
步骤7:正常启动MySQL服务
现在,以正常方式启动MySQL服务:
sudo systemctl start mysql
步骤8:验证新密码
使用新密码登录MySQL,验证更改是否成功:
mysql -u root -p
输入新设置的密码,如果成功登录,则表示密码已成功重置。
完整的脚本(仅供参考,根据实际情况进行修改)
#!/bin/bash# 停止MySQL服务sudo systemctl stop mysql# 跳过权限表启动MySQLsudo mysqld_safe --skip-grant-tables &sleep 5# 登录MySQL并更改密码mysql -u root <<EOFALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';FLUSH PRIVILEGES;EOF# 停止MySQL服务sudo systemctl stop mysql# 重新启动MySQL服务sudo systemctl start mysqlecho "MySQL root password has been reset."
将 new_password
替换为你想要设置的新密码。请注意,这个脚本在执行过程中会暴露新密码,因此建议手动执行每一步以确保安全。
注意事项
- 备份数据:在进行任何密码重置操作之前,确保已备份重要数据,以防出现意外。
- 安全性:跳过权限表启动MySQL是一种有风险的操作。确保在安全的环境中进行操作,并在完成后恢复正常的安全设置。
- 权限问题:上述操作需要具有系统管理员权限的用户执行。确保使用具有适当权限的用户来执行这些命令。
通过这些步骤,你可以成功重置MySQL的root密码,恢复对数据库的访问。
from:公众号【DBA小强】