本文主要给大家简单讲讲MySQL 5.7.18密码忘记或者过期应如何解决,相关专业术语大家可以上网查查或者找一些相关书籍补充一下,这里就不涉猎了,我们就直奔主题吧,希望MySQL 5.7.18密码忘记或者过期应如何解决这篇文章可以给大家带来一些实际帮助。
一、忘记密码解决
[root@linux-node2 ~]# /etc/init.d/mysqld stop
[root@linux-node2 ~]# mysqld_safe --skip-grant-tables &
[root@linux-node2 ~]# 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;
[root@linux-node2 ~]# /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
[root@linux-node3 mysql]# /etc/init.d/mysqld restart
Shutting down MySQL.. SUCCESS!
Starting MySQL. SUCCESS!
[root@linux-node3 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、问题现象
[root@linux-node2 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
[root@linux-node2 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
[root@linux-node2 mysql]# /etc/init.d/mysqld restart
Shutting down MySQL.. SUCCESS!
Starting MySQL. SUCCESS!
3、登录mysql
[root@linux-node2 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、去掉跳过授权表登录,并重启登录
[root@linux-node2 mysql]# vim /etc/my.cnf
[root@linux-node2 mysql]# /etc/init.d/mysqld restart
Shutting down MySQL.. SUCCESS!
Starting MySQL. SUCCESS!
[root@linux-node2 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密码忘记或者过期应如何解决就先给大家讲到这里,对于其它相关问题大家想要了解的可以持续关注我们的行业资讯。我们的板块内容每天都会捕捉一些行业新闻及专业知识分享给大家的。