介绍
忘记密码发生在我们最好的。 如果您忘记或丢失root密码到你的MySQL或MariaDB的数据库,你仍然可以访问并重置密码,如果你有访问服务器和sudo
-启用用户帐户。 本教程将介绍如何重置MySQL和MariaDB的旧版本和更高版本的root密码。
先决条件
要恢复您的MySQL / MariaDB root 密码,您需要:- 使用sudo用户访问运行MySQL或MariaDB的Linux服务器。
第1步 - 识别数据库版本
大多数现代Linux发行版随MySQL或MariaDB,一个流行的替代,完全兼容MySQL。根据所使用的数据库及其版本,您需要使用不同的命令来恢复root密码。 您可以使用以下命令检查您的版本:mysql --version
你会看到一些输出像这样与MySQL:
MySQL outputmysql Ver 14.14 Distrib 5.7.16, for Linux (x86_64) using EditLine wrapper
或者输出这样的MariaDB:
MariaDB outputmysql Ver 15.1 Distrib 5.5.52-MariaDB, for Linux (x86_64) using readline 5.1
记下哪个数据库和你运行的版本,你将来使用它们。接下来,您需要停止数据库,以便您可以手动访问它。
第2步 - 停止数据库服务器
要更改root密码,必须事先关闭数据库服务器。 你可以这样做MySQL的:sudo systemctl stop mysql
并且对于MariaDB与:
sudo systemctl stop mariadb
在数据库服务器停止后,您将手动访问它以重置root密码。
第3步 - 在没有权限检查的情况下重新启动数据库服务器
如果运行MySQL和MariaDB而不加载有关用户权限的信息,它将允许您以root权限访问数据库命令行,而不提供密码。这将允许您在不知道数据库的情况下访问数据库。 要做到这一点,你需要从装载 授权表 ,用于存储用户的权限信息停止数据库。因为这有一点安全风险,你也应该跳过网络,以防止其他客户端连接。 启动数据库而不加载授权表或启用网络:sudo mysqld_safe --skip-grant-tables --skip-networking &
此命令结尾处的&符将使此过程在后台运行,以便您可以继续使用终端。 现在您可以以root用户身份连接到数据库,而不应该要求输入密码。
mysql -u root
您将立即看到数据库shell提示。
MySQL提示符
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
MariaDB提示符
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>
现在您已具有root访问权限,您可以更改root密码。
第4步 - 更改root密码
一个简单的方法来改变对MySQL的现代版本的root密码是使用ALTER USER
命令。但是,此命令现在不会工作,因为未加载授权表。 让我们告诉数据库服务器通过发出重装授权表
FLUSH PRIVILEGES
命令。
FLUSH PRIVILEGES;
现在我们实际上可以更改root密码。 对于
MySQL 5.7.6和更新 ,以及
MariaDB的20年1月10日和更新 ,请使用以下命令。
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
对于
MySQL 5.7.5及以上 ,以及
MariaDB的20年10月1日及以上,使用:
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('new_password');
请务必将
new_password
与您的新选择的密码。
注意 :如果
ALTER USER
命令不起作用,它通常表明一个更大的问题。 但是,你可以尝试
UPDATE ... SET
重新设置root的密码,而不是。
UPDATE mysql.user SET authentication_string = PASSWORD('new_password') WHERE User = 'root' AND Host = 'localhost';
记住在此之后重新加载授予表。 在任一情况下,您都应该看到该命令已成功执行的确认。
OutputQuery OK, 0 rows affected (0.00 sec)
密码已更改,因此您现在可以停止数据库服务器的手动实例并重新启动它。
第5步 - 正常重新启动数据库服务器
首先,停止你手动启动第3步中的PID此命令搜索,或进程ID,MySQL或MariaDB的过程,并将数据库服务器的实例SIGTERM
告诉它执行清理行动后顺利退出。 您可以了解更多在
这个Linux进程管理教程 。 对于MySQL,请使用:
sudo kill `cat /var/run/mysqld/mysqld.pid`
对于MariaDB,请使用:
sudo kill `/var/run/mariadb/mariadb.pid`
然后,使用重新启动该服务
systemctl
。 对于MySQL,请使用:
sudo systemctl start mysql
对于MariaDB,请使用:
sudo systemctl start mariadb
现在,您可以通过运行以下方式确认新密码是否已正确应用:
mysql -u root -p
该命令现在应提示输入新分配的密码。输入它,您应该如预期的那样访问数据库提示。