本文章向大家介绍如何重置MySQL或MariaDB Root密码,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
介绍
忘记密码发生在我们大多数人身上。如果您忘记或丢失了MySQL或MariaDB数据库的root密码,如果您有权访问服务器和启用了sudo
用户帐户,您仍然可以获得访问权限并重置密码。
本教程将介绍如何重置较早版本的MySQL和MariaDB的root密码。
先决条件
要恢复根MySQL / MariaDB密码,您需要:
第1步 – 识别数据库版本
大多数现代Linux发行版都附带MySQL或MariaDB,这是一种流行的替代品,与MySQL完全兼容。根据所使用的数据库及其版本,您需要使用不同的命令来恢复root密码。
您可以使用以下命令检查您的版本:
你会看到MySQL的一些输出:
mysql Ver 14.14 Distrib 5.7.16, for Linux (x86_64) using EditLine wrapper
或者为MariaDB输出如下:
mysql 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权限访问数据库命令行而无需提供密码。这将允许您在不知情的情况下访问数据库。
为此,您需要停止数据库加载授权表,该_表_存储用户权限信息。因为这有一点安全风险,所以您也应该跳过网络以防止其他客户端连接。
在不加载授权表或启用网络的情况下启动数据库:
此命令末尾的&符号将使此过程在后台运行,以便您可以继续使用终端。
现在您可以以root用户身份连接到数据库,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
命令告诉数据库服务器重新加载授权表。
现在我们可以实际更改root密码。
对于MySQL 5.7.6及更高版本以及MariaDB 10.1.20及更高版本,请使用以下命令。
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
对于MySQL 5.7.5及更早版本以及MariaDB 10.1.20及更早版本,请使用:
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';
请记住在此之后重新加载授权表。
在任何一种情况下,您都应该看到命令已成功执行的确认。
Query OK, 0 rows affected (0.00 sec)
密码已更改,因此您现在可以停止数据库服务器的手动实例并按原样重新启动它。
步骤5 – 正常重启数据库服务器
首先,停止在步骤3中手动启动的数据库服务器实例。此命令搜索MySQL或MariaDB进程的PID或进程ID,并在执行清理操作后发送SIGTERM
以告知它顺利退出。
对于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或MariaDB服务器的管理访问权限。确保您选择的新root密码强大且安全,并将其保存在安全的地方。
参考文献:《How To Reset Your MySQL or MariaDB Root Password》