码迷,mamicode.com
首页 > 数据库 > 详细

MySQL数据库root密码丢失后的找回

时间:2018-07-04 20:13:07      阅读:205      评论:0      收藏:0      [点我收藏+]

标签:my.cnf   row   最好   default   环境   ror   exe   alt   net   

实验前准备:
1.环境
端口3306 该实例是生产环境,欲找回3306的 root密码
测试3307 测试时使用
2.开启 3306,3307 mysqld 服务

[root@zst1 ~]# mysqld --defaults-file=/data/mysql/mysql3306/my.cnf &
[root@zst1 ~]# mysqld --defaults-file=/data/mysql/mysql3307/my.cnf & 

 

两种方法:
一.使用 skip_grant_tables 参数

[root@zst1 ~]# ps -ef|grep 3306|grep -v grep
mysql 947 365 0 19:00 pts/0 00:00:00 mysqld --defaults-file=/data/mysql/mysql3306/my.cnf
[root@zst1 ~]# kill -9 947
[root@zst1 ~]# mysqld --defaults-file=/data/mysql/mysql3306/my.cnf --skip_grant_tables & 
[root@zst1 ~]# mysql -S /tmp/mysql3306.sock
mysql> alter user user() identified by zstzst;
ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
mysql> update mysql.user set authentication_string=password(zstzst3306) where host=localhost and user=root; 
Query OK, 1 row affected, 1 warning (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 1

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql> shutdown;
Query OK, 0 rows affected (0.00 sec)
[root@zst1 ~]# mysqld --defaults-file=/data/mysql/mysql3306/my.cnf &
[root@zst1 ~]# mysql -S /tmp/mysql3306.sock -pzstzst3306 #登陆成功

这个方法需要重启MySQL服务,由于免密码登陆,所以再启动数据库时,最好也要加上参数 --skip__networking

 

二.拷贝修改user.*

3306 老密码是zstzst,假装遗忘,通过拷贝user*文件方式修改成zstzst3306
3307 password‘zstzst3307‘

[root@zst1 ~]# mysql -S /tmp/mysql3306.sock -pzstzst3306
mysql> alter user root@localhost identified by zstzst; #3306密码修改成 zstzst
[root@zst1 ~]# ps -ef|grep mysqld|grep -v grep
mysql 1032 365 0 19:00 pts/0 00:00:00 mysqld --defaults-file=/data/mysql/mysql3307/my.cnf
mysql 3960 365 0 19:05 pts/0 00:00:00 mysqld --defaults-file=/data/mysql/mysql3306/my.cnf
[root@zst1 ~]# kill -9 1032 #杀掉3307
[root@zst1 ~]# \cp /data/mysql/mysql3306/data/mysql/user.frm /data/mysql/mysql3307/data/mysql/user.frm 
[root@zst1 ~]# \cp /data/mysql/mysql3306/data/mysql/user.MYD /data/mysql/mysql3307/data/mysql/user.MYD
[root@zst1 ~]# \cp /data/mysql/mysql3306/data/mysql/user.MYI /data/mysql/mysql3307/data/mysql/user.MYI
[root@zst1 ~]# mysqld --defaults-file=/data/mysql/mysql3307/my.cnf --skip_grant_tables & #这样不用重启生产库
[root@zst1 ~]# mysql -S /tmp/mysql3307.sock
mysql> update mysql.user set authentication_string=password(zstzst3306) where host=localhost and user=root; 
Query OK, 0 rows affected, 1 warning (0.00 sec)
Rows matched: 1 Changed: 0 Warnings: 1

mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)

mysql> shutdown;
Query OK, 0 rows affected (0.01 sec)
[root@zst1 ~]# \cp /data/mysql/mysql3307/data/mysql/user.frm /data/mysql/mysql3306/data/mysql/user.frm 
[root@zst1 ~]# \cp /data/mysql/mysql3307/data/mysql/user.MYD /data/mysql/mysql3306/data/mysql/user.MYD
[root@zst1 ~]# \cp /data/mysql/mysql3307/data/mysql/user.MYI /data/mysql/mysql3306/data/mysql/user.MYI
[root@zst1 ~]# kill -HUP 3960
[root@zst1 ~]# mysql -S /tmp/mysql3306.sock -pzstzst3306 #验证登陆成功

 

MySQL数据库root密码丢失后的找回

标签:my.cnf   row   最好   default   环境   ror   exe   alt   net   

原文地址:https://www.cnblogs.com/bkwong/p/9264973.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!