如何重置MySQL或MariaDB Root密码

介绍

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

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

先决条件

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

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

第1步 - 识别数据库版本

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

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

mysql --version

你会看到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权限访问数据库命令行而无需提供密码。这将允许您在不知情的情况下访问数据库。

为此,您需要停止数据库加载授权表,该存储用户权限信息。因为这有一点安全风险,所以您也应该跳过网络以防止其他客户端连接。

在不加载授权表或启用网络的情况下启动数据库:

sudo mysqld_safe --skip-grant-tables --skip-networking &

此命令末尾的&符号将使此过程在后台运行,以便您可以继续使用终端。

现在您可以以root用户身份连接到数据库,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 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 -u root -p

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

结论

您现在可以恢复对MySQL或MariaDB服务器的管理访问权限。确保您选择的新root密码强大且安全,并将其保存在安全的地方。

更多Linux教程请前往腾讯云+社区学习更多知识。


参考文献:《How To Reset Your MySQL or MariaDB Root Password》

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏云计算教程系列

如何在Ubuntu 18.04上重置MySQL或MariaDB Root密码

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

57840
来自专栏禁心尽力

solr服务中集成IKAnalyzer中文分词器、集成dataimportHandler插件

昨天已经在Tomcat容器中成功的部署了solr全文检索引擎系统的服务;今天来分享一下solr服务在海量数据的网站中是如何实现数据的检索。 在solr服务中集...

23580
来自专栏C/C++基础

MySQL新建存储过程出现:ERROR 1558 (HY000): Column count of mysql.proc is wrong. Expected 20, found 16. Create

我在MySQL版本:Ver 14.14 Distrib 5.1.61上创建存储过程是没有问题的,但是在版本:Ver 14.12 Distrib 5.0.26上面...

11220
来自专栏JavaEdge

Mac 下 MySQL5.7.22的安装

1.使用安装包安装mysql(网上下载实在是太慢了,需要安装包的可以在文章底部留言,我发给您) 双击打开安装文件 ? 双击pkg文件安装 一路向下,记得保存最后...

374100
来自专栏云计算

使用JClouds在Java中获取和发布云服务器

本文中,我们举例来说明如何使用JClouds API 获取和发布云服务器。JClouds API 可以和大量云服务提供商(包括Amazon EC2和Racksp...

21990
来自专栏bboysoul

把用户加入sudo

sudo是一个使普通用户获取超级管理员用户的命令,如果你新建了一个用户,它是不允许使用sudo命令的,那么如何使它使用sudo呢

9330
来自专栏哲学驱动设计

Rafy 框架-发布网页版用户手册

前段时间把 Rafy 的用户手册由 CHM 格式转换为了网页格式,而且发布到了 github.io 上,即方便文档的实时更新,也方便大家查看。 Rafy 用户手...

23150
来自专栏深度学习之tensorflow实战篇

WINDOW 安装mysql5.7数据库,并设置密码及相关报错

环境:系统:WINDOW10 数据库:mysql5.7 windows 10安装mysql5.7 第一步 到mysql官网下载mysql-5.7.17-...

29460
来自专栏Jed的技术阶梯

Linux中安装MySQL

18820
来自专栏自由而无用的灵魂的碎碎念

将MySQL数据迁移到Oracle

因为项目的原因,今晚将mysql数据库的内容尝试迁移到oracle,虽然结果失败,不过学到了不少,下次就不一定了,哈哈

29410

扫码关注云+社区

领取腾讯云代金券