MySQL 5.7.18忘记密码和密码过期解决

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL 5.7.18忘记密码和密码过期解决相关的知识,希望对你有一定的参考价值。

一、忘记密码解决

[[email protected] ~]# /etc/init.d/mysqld stop
[[email protected] ~]# mysqld_safe --skip-grant-tables &
[[email protected] ~]# mysql -p
mysql> update mysql.user set authentication_string=password(‘123456‘) where user=‘root‘ and Host = ‘localhost‘;

#特别提醒注意的一点是,新版的mysql数据库下的user表中已经没有Password字段了
#而是将加密后的用户密码存储于authentication_string字段
mysql> flush privileges;
mysql> quit;
[[email protected] ~]# /etc/init.d/mysqld restart

#然后mysql就可以连接了,但此时操作似乎功能不完全,还要alter user…
mysql> show databases;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
mysql> alter user ‘root‘@‘localhost‘ identified by ‘123456‘;
Query OK, 0 rows affected (0.01 sec)

mysql> quit;
Bye
[[email protected] mysql]# /etc/init.d/mysqld restart
Shutting down MySQL.. SUCCESS! 
Starting MySQL. SUCCESS! 
[[email protected] mysql]# mysql -uroot -p123456
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 3
Server version: 5.7.18-log MySQL Community Server (GPL)

Copyright (c) 2000, 2017, 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> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+

二、密码过期问题解决

1、问题现象

[[email protected] mysql]# mysql -uroot -p
Enter password: 
ERROR 1862 (HY000): Your password has expired. To log in you must change it using a client that supports expired passwords.

2、修改配置文件/etc/my.cnf

[[email protected] mysql]# vim /etc/my.cnf 
#在[mysqld]下增加skip-grant-tables,跳过授权表登录
[client]    
port        = 3306     
socket      = /data/mysql/mysql.sock

[mysql]
no-auto-rehash

[mysqld]    
user = mysql
port        = 3306     
socket      = /data/mysql/mysql.sock     
datadir     = /data/mysql/data
log-bin = /data/mysql/mysql-bin
server-id = 6
skip-grant-tables
[[email protected] mysql]# /etc/init.d/mysqld restart
Shutting down MySQL.. SUCCESS! 
Starting MySQL. SUCCESS! 

3、登录mysql

[[email protected] mysql]# mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.7.18-log MySQL Community Server (GPL)

Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.

Type ‘help;‘ or ‘\h‘ for help. Type ‘\c‘ to clear the current input statement.

MySQL [(none)]> use mysql;
Database changed

MySQL [mysql]> update user set password_expired=‘N‘ where user=‘root‘;
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0

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

MySQL [mysql]> quit;
Bye

4、去掉跳过授权表登录,并重启登录

[[email protected] mysql]# vim /etc/my.cnf
[[email protected] mysql]# /etc/init.d/mysqld restart
Shutting down MySQL.. SUCCESS! 
Starting MySQL. SUCCESS! 
[[email protected] mysql]# mysql -uroot -p123456
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.18-log MySQL Community Server (GPL)

Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.

Type ‘help;‘ or ‘\h‘ for help. Type ‘\c‘ to clear the current input statement.

MySQL [(none)]> quit;
Bye

以上是关于MySQL 5.7.18忘记密码和密码过期解决的主要内容,如果未能解决你的问题,请参考以下文章

关于mysql8启动后又停止(windows10系统),忘记密码以及密码过期等坑解决办法总结!

Mac环境下双mysql环境统一和centos下mysql忘记密码处理

解决mysql密码过期问题

Mysql密码过期的解决方法

mysql 忘记密码,重置密码,mysql.user表为空的解决办法

Ubuntu下MySql忘记密码解决密码