linux学习笔记 · 2023年1月2日 0

如何重置MySQL或MariaDB Root密码

本文章向大家介绍如何重置MySQL或MariaDB Root密码,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

介绍

忘记密码发生在我们大多数人身上。如果您忘记或丢失了MySQL或MariaDB数据库的root密码,如果您有权访问服务器和启用了sudo用户帐户,您仍然可以获得访问权限并重置密码。

本教程将介绍如何重置较早版本的MySQL和MariaDB的root密码。

先决条件

要恢复根MySQL / MariaDB密码,您需要:

  • 使用sudo用户访问运行MySQL或MariaDB的Linux服务器。没有服务器的同学可以在这里购买,不过我个人更推荐您使用免费的腾讯云开发者实验室进行试验,学会安装后再购买服务器

第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》