MySQL忘记密码重置密码

作者:IT技术圈子 浏览量:135   发表于 2024-09-22 13:44 标签:

步骤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 替换为你想要设置的新密码。请注意,这个脚本在执行过程中会暴露新密码,因此建议手动执行每一步以确保安全。

注意事项

  1. 备份数据:在进行任何密码重置操作之前,确保已备份重要数据,以防出现意外。
  2. 安全性:跳过权限表启动MySQL是一种有风险的操作。确保在安全的环境中进行操作,并在完成后恢复正常的安全设置。
  3. 权限问题:上述操作需要具有系统管理员权限的用户执行。确保使用具有适当权限的用户来执行这些命令。

通过这些步骤,你可以成功重置MySQL的root密码,恢复对数据库的访问。

from:公众号【DBA小强】