当 MySQL 数据库中的 ROOT 用户密码丢失导致无法登录时,可以通过使用 SKIP-GRANT-TABLES 的方式修改密码。下面是详细讲解:
准备
在开始操作之前,需要先进行一些准备工作:
- 停止 MySQL 服务
- 找到 MySQL 数据库的配置文件 my.cnf,如果无法找到,可以尝试在终端使用以下命令查找:
find / -name my.cnf
- 备份 MySQL 数据库,以便在操作失败时恢复数据
操作步骤
- 修改 my.cnf 配置文件
在 my.cnf 配置文件中,找到以下行:
[mysqld]
在该行的下方添加以下内容:
skip-grant-tables
修改完成后保存并退出。
- 启动 MySQL 服务
在终端中使用以下命令启动 MySQL 服务:
$ sudo service mysql start
- 连接到 MySQL 数据库
在终端中使用以下命令连接到 MySQL 数据库:
$ mysql -u root
这里不需要输入密码,因为已经跳过了授权表。
- 更新 ROOT 用户密码
现在已经成功登录到 MySQL 数据库,可以执行 SQL 命令来更新 ROOT 用户密码了,例如将密码设置为 newpassword
:
mysql> update mysql.user set authentication_string=password('newpassword') where user='root';
更新完成后,刷新授权表:
mysql> flush privileges;
- 恢复 my.cnf 配置文件
将 my.cnf 的修改撤销,去掉之前添加的 skip-grant-tables
:
#skip-grant-tables
修改完成后保存并退出。
- 重启 MySQL 服务
在终端中使用以下命令重启 MySQL 服务:
$ sudo service mysql restart
- 连接测试
使用新密码连接 MySQL 数据库,如果可以正常登录,则说明修改密码成功了。
示例说明
示例一:在 Ubuntu 上使用 SKIP-GRANT-TABLES 解决 MYSQL ROOT 密码丢失
在 Ubuntu 上,可以按照以下步骤操作解决 MYSQL ROOT 密码丢失问题。
- 打开终端,并停止 MySQL 服务:
$ sudo service mysql stop
- 找到 my.cnf 配置文件,并添加
skip-grant-tables
选项:
$ sudo nano /etc/mysql/my.cnf
在文件中找到 [mysqld]
一行,在该行下一行添加 skip-grant-tables
,保存并退出编辑器。
- 启动 MySQL 服务并进入 MySQL:
$ sudo service mysql start
$ mysql -u root
- 修改 ROOT 用户密码:
mysql> update mysql.user set authentication_string=password('newpassword') where user='root';
- 刷新授权表并退出 MySQL:
mysql> flush privileges;
mysql> quit
- 恢复 my.cnf 配置文件:
$ sudo nano /etc/mysql/my.cnf
删除刚才添加的 skip-grant-tables
选项,保存并退出编辑器。
- 重启 MySQL 服务:
$ sudo service mysql restart
- 使用新密码登录 MySQL:
$ mysql -u root -p
示例二:在 CentOS 上使用 SKIP-GRANT-TABLES 解决 MYSQL ROOT 密码丢失
在 CentOS 上,可以按照以下步骤操作解决 MYSQL ROOT 密码丢失问题。
- 打开终端,并停止 MySQL 服务:
$ sudo systemctl stop mariadb
- 找到 my.cnf 配置文件,并添加
skip-grant-tables
选项:
$ sudo nano /etc/my.cnf
在文件中找到 [mysqld]
一行,在该行下一行添加 skip-grant-tables
,保存并退出编辑器。
- 启动 MySQL 服务并进入 MySQL:
$ sudo systemctl start mariadb
$ sudo mysql -u root
- 修改 ROOT 用户密码:
mysql> update mysql.user set authentication_string=password('newpassword') where user='root';
- 刷新授权表并退出 MySQL:
mysql> flush privileges;
mysql> quit
- 恢复 my.cnf 配置文件:
$ sudo nano /etc/my.cnf
删除刚才添加的 skip-grant-tables
选项,保存并退出编辑器。
- 重启 MySQL 服务:
$ sudo systemctl restart mariadb
- 使用新密码登录 MySQL:
$ mysql -u root -p
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:使用SKIP-GRANT-TABLES 解决 MYSQL ROOT密码丢失 - Python技术站