MySQL忘记密码了怎么解决
前言:在不考虑到原来用户对关联数据库的授权问题的情况下,有以下三种思路解决
#1、登录状态下修改
说明:在登录状态的话,直接使用命令修改密码就行了
mysql> use mysql;
mysql> update user set password=PASSWORD('test123') where user='root' and host='localhost';
#2、安全模式修改
说明:退出数据库了的话
第一步:关闭数据库
[root@db01 ~]# /etc/init.d/mysqld stop
第二步:安全模式启动数据库
[root@db01 ~]# mysqld_safe --skip-grant-tables --skip-networking &
第三步:进入数据库修改密码
[root@db01 ~]# mysql
mysql> use mysql;
mysql> update user set password=PASSWORD('test123') where user='root' and host='localhost';
第四步:退出数据库,重新启动数据库,使用新的密码登录数据库
mysql> exit;
[root@db01 ~]# /etc/init.d/mysqld restart
[root@db01 ~]# mysql -uroot -ptest123
#3、还原mysql.user数据库初始状态
第一步:关闭数据库
[root@db01 ~]# /etc/init.d/mysqld stop
第二步:安全模式启动数据库
[root@db01 ~]# mysqld_safe --skip-grant-tables --skip-networking &
第三步:进入数据库修改密码
[root@db01 ~]# mysql
mysql> delete from mysql.user;
mysql> INSERT INTO mysql.user VALUES ('localhost','root',PASSWORD('123'),'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','',0,0,0,0,'mysql_native_password','','N');
第四步:退出数据库,重新启动数据库,使用新的密码登录数据库
mysql> exit;
[root@db01 ~]# /etc/init.d/mysqld restart
[root@db01 ~]# mysql -uroot -p123
mysql> show databases;
补充说明:查看用户的属性
mysql> select * from mysql.user \G;