专栏首页云计算教程系列如何重置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 --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 16.04上保护OrientDB数据库

    OrientDB是一个多模型的NoSQL数据库,支持文档和图形数据库。它是一个Java应用程序,可以在任何操作系统上运行。它也完全支持ACID,支持多主复制。

    黑色技术
  • 如何在Ubuntu 14.04上使用memcached将NoSQL查询添加到MySQL

    在许多优秀的文章中已经描述了使用memcached及其独立服务器实现与MySQL的一般概念,但是,作为独立服务器的memcached在MySQL客户端访问层之前...

    黑色技术
  • 如何在Ubuntu 14.04上使用wrk对HTTP延迟进行基准测试

    本文重点介绍称为开源HTTP基准测试工具WRK,它可以在高负荷下测量HTTP服务的延迟。

    黑色技术
  • 使用durid的ConfigFilter对数据库密码加密

    上一篇写到了使用druid对项目的sql、数据源,web、url、session等的监控,今天继续分享一个使用druid的ConfigFilter对数据库密码加...

    哎_小羊
  • Scala兴衰史:暂时的没落或许是一个新的开始

    5年前,Scala 似乎曾要成为编程语言中下一个佼佼者,因为它能够优雅得使用面向对象编程范式进行函数编程。 现如今,随着像 LinkedIn 和 Yammer ...

    Albert陈凯
  • Scala简介和安装

    云飞扬
  • Hadoop hdfs+Spark配置

    <configuration> <property> <name>dfs.nameservices</name> <value>guanj...

    算法之名
  • 大数据入门:Java和Scala编程对比

    在学习大数据之初,很多人都会对编程语言的学习有疑问,比如说大数据编程主要用什么语言,在实际运用当中,大数据主流编程是Java,但是涉及到Spark、Kafka框...

    成都加米谷大数据
  • ospf(h3c)

    [ra-ospf-1-area-0.0.0.1]network 192.168.1.0 0.0.0.255//声明网络号

    py3study
  • SqlServer2005数据库文件损坏的拯救过程

    客服人员找我,说用户的数据库不小心搞坏了(具体怎么坏的暂不追究),我到现场观看现象,发现以前在SqlServer2000时很多人都遇见过,于是寻找了几篇解决办法...

    用户1183026

扫码关注云+社区

领取腾讯云代金券