在运维工作中,MySQL忘记root密码如何找回?
在运维工作中,如果忘记了 MySQL 的 root
密码,可以通过以下几种方法进行重置。以下是详细的操作步骤:
1. 使用 --skip-grant-tables
选项
-
停止 MySQL 服务:
sudo systemctl stop mysql
或者在较旧的系统中使用:
sudo service mysql stop
-
以安全模式启动 MySQL:
sudo mysqld_safe --skip-grant-tables &
-
登录 MySQL:
mysql -u root
-
重置密码:
-
如果是 MySQL 5.7.6 以下版本:
USE mysql; UPDATE user SET authentication_string=PASSWORD('new_password') WHERE User='root'; FLUSH PRIVILEGES;
-
如果是 MySQL 5.7.6 及以上版本:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password'; FLUSH PRIVILEGES;
-
-
退出 MySQL:
exit
-
重启 MySQL 服务:
sudo systemctl start mysql
或者:
sudo service mysql start
-
验证新密码:
mysql -u root -p
输入新密码,验证是否可以成功登录。
2. 使用 --init-file
选项
-
创建一个包含重置密码命令的文件:
echo "ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password'; FLUSH PRIVILEGES;" > /tmp/init.sql
-
停止 MySQL 服务:
sudo systemctl stop mysql
-
以安全模式启动 MySQL,并使用
--init-file
选项:sudo mysqld_safe --init-file=/tmp/init.sql &
-
等待 MySQL 服务启动并执行重置密码命令。
-
重启 MySQL 服务:
sudo systemctl start mysql
-
验证新密码:
mysql -u root -p
输入新密码,验证是否可以成功登录。
3. 使用 mysqladmin
命令(适用于知道原密码的情况)
-
登录到 MySQL 服务器所在的操作系统终端。
-
执行命令:
mysqladmin -u root -p -h 127.0.0.1 -P 3306 password 'new_password'
执行命令后会提示输入原密码,输入原密码后即可修改为新密码。
4. 注意事项
- 在执行上述操作时,请确保你有足够的权限来停止和启动 MySQL 服务。
- 在重置密码之前,建议备份你的数据库,以防万一。
- 如果你使用的是 MySQL 5.7.6 及以上版本,建议使用
ALTER USER
命令来重置密码。 - 如果你使用的是 MariaDB(MySQL 的一个分支),步骤可能略有不同。
综上所述,通过以上方法,你可以轻松找回并重置 MySQL 的 root
密码。