MySQL忘记root密码不重启mysqld的方法

时间:2023-09-08 21:08:32
MySQL忘记root密码不重启mysqld的方法
1、首先得有一个可以拥有修改权限的mysql数据库账号,当前的mysql实例账号(较低权限的账号,比如可以修改zabbix数据库)或者其他相同版本实例的账号。把 data/mysql 目录下面的user表相关的文件复制到 data/zabbix 目录下面。
[root@restoredb mysql]# cp mysql/user.* test/
[root@restoredb mysql]# chown mysql.mysql test/user.*
2、使用另一个较低权限的账号链接数据库,设置 zabbix 数据库中的 user 存储的密码数据。
[root@restoredb mysql]# mysql -uzabbix -pzabbixpasswd -A 
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1180
Server version: 5.7.22-log MySQL Community Server (GPL)
Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> use zabbix;
Database changed
mysql> update user set authentication_string=password('zabbixpasswd') where user='root';
Query OK, 2 rows affected, 1 warning (0.04 sec)
Rows matched: 2 Changed: 2 Warnings: 1
3、把修改后的user.MYD和user.MYI复制到mysql目录下,记得备份之前的文件。
mv mysql/user.MYD mysql/user.MYD.bak
mv mysql/user.MYI mysql/user.MYI.bak
cp zabbix/user.MY* mysql/
chown mysql.mysql mysql/user.*
4、kill -SIGHUP 
[root@restoredb mysql]# pgrep -n mysql
31650
[root@restoredb mysql]#
[root@restoredb mysql]# kill -SIGHUP 31650
5、测试
[root@restoredb mysql]# mysql -uroot -pzabbixpasswd -A 
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1190
Server version: 5.7.22-log MySQL Community Server (GPL)
Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>