如何重置MySQL或MariaDB root密码

2017-01-10 10:03:32来源:oschina作者:xingfei人点击

2017年01月09日


介绍

忘记密码发生在我们最好的。 如果您忘记或丢失root密码到你的MySQL或MariaDB的数据库,你仍然可以访问并重置密码,如果你有访问服务器和sudo-启用用户帐户。


本教程将介绍如何重置MySQL和MariaDB的旧版本和更高版本的root密码。


先决条件

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

使用sudo用户访问运行MySQL或MariaDB的Linux服务器。 第1步 – 识别数据库版本

大多数现代Linux发行版随MySQL或MariaDB,一个流行的替代,完全兼容MySQL。根据所使用的数据库及其版本,您需要使用不同的命令来恢复root密码。


您可以使用以下命令检查您的版本:


mysql --version

你会看到一些输出像这样与MySQL:


MySQL outputmysqlVer 14.14 Distrib 5.7.16, for Linux (x86_64) usingEditLine wrapper

或者输出这样的MariaDB:


MariaDB outputmysqlVer 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

该命令现在应提示输入新分配的密码。输入它,您应该如预期的那样访问数据库提示。


结论

您现在已恢复MySQL或MariaDB服务器的管理访问权限。确保您选择的新的root密码是安全的,并且保持在安全的地方。

最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台