前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何重置MySQL或MariaDB Root密码

如何重置MySQL或MariaDB Root密码

原创
作者头像
黑色技术
修改2018-10-22 11:35:07
5.3K1
修改2018-10-22 11:35:07
举报
文章被收录于专栏:云计算教程系列

介绍

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

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

先决条件

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

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

第1步 - 识别数据库版本

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

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

代码语言:javascript
复制
mysql --version

你会看到MySQL的一些输出:

代码语言:javascript
复制
mysql  Ver 14.14 Distrib 5.7.16, for Linux (x86_64) using  EditLine wrapper

或者为MariaDB输出如下:

代码语言:javascript
复制
mysql  Ver 15.1 Distrib 5.5.52-MariaDB, for Linux (x86_64) using readline 5.1

记下您正在运行的数据库和版本,稍后您将使用它们。接下来,您需要停止数据库,以便手动访问它。

第2步 - 停止数据库服务器

要更改root密码,必须事先关闭数据库服务器。

您可以通过以下方式为MySQL执行此操作

代码语言:javascript
复制
sudo systemctl stop mysql

对于MariaDB:

代码语言:javascript
复制
sudo systemctl stop mariadb

数据库服务器停止后,您将手动访问它以重置root密码。

步骤3 - 在没有权限检查的情况下重新启动数据库服务器

如果在不加载有关用户权限的信息的情况下运行MySQL和MariaDB,则可以使用root权限访问数据库命令行而无需提供密码。这将允许您在不知情的情况下访问数据库。

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

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

代码语言:javascript
复制
sudo mysqld_safe --skip-grant-tables --skip-networking &

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

现在您可以以root用户身份连接到数据库,root用户不应该要求输入密码。

代码语言:javascript
复制
mysql -u root

您将立即看到数据库shell提示符。

MySQL提示

代码语言:javascript
复制
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
​
mysql>

MariaDB提示

代码语言:javascript
复制
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命令告诉数据库服务器重新加载授权表。

代码语言:javascript
复制
FLUSH PRIVILEGES;

现在我们可以实际更改root密码。

对于MySQL 5.7.6及更高版本以及MariaDB 10.1.20及更高版本,请使用以下命令。

代码语言:javascript
复制
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';

对于MySQL 5.7.5及更早版本以及MariaDB 10.1.20及更早版本,请使用:

代码语言:javascript
复制
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('new_password');

请务必使用您选择的新密码对new_password进行更换。

注意:如果ALTER USER命令不起作用,通常表示更大的问题。但是,您可以尝试UPDATE ... SET重置root密码。

代码语言:javascript
复制
UPDATE mysql.user SET authentication_string = PASSWORD('new_password') WHERE User = 'root' AND Host = 'localhost';

请记住在此之后重新加载授权表。

在任何一种情况下,您都应该看到命令已成功执行的确认。

代码语言:javascript
复制
Query OK, 0 rows affected (0.00 sec)

密码已更改,因此您现在可以停止数据库服务器的手动实例并按原样重新启动它。

步骤5 - 正常重启数据库服务器

首先,停止在步骤3中手动启动的数据库服务器实例。此命令搜索MySQL或MariaDB进程的PID或进程ID,并在执行清理操作后发送SIGTERM以告知它顺利退出。

对于MySQL,使用:

代码语言:javascript
复制
sudo kill `cat /var/run/mysqld/mysqld.pid`

对于MariaDB,请使用:

代码语言:javascript
复制
sudo kill `/var/run/mariadb/mariadb.pid`

然后,使用systemctl来重新启动服务。

对于MySQL,使用:

代码语言:javascript
复制
sudo systemctl start mysql

对于MariaDB,请使用:

代码语言:javascript
复制
sudo systemctl start mariadb

现在,您可以通过运行以下命令确认已正确应用新密码:

代码语言:javascript
复制
mysql -u root -p

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

结论

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

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


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

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 介绍
  • 先决条件
  • 第1步 - 识别数据库版本
  • 第2步 - 停止数据库服务器
  • 步骤3 - 在没有权限检查的情况下重新启动数据库服务器
  • 第4步 - 更改Root密码
  • 步骤5 - 正常重启数据库服务器
  • 结论
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档