前言:这篇转载的文章是我很久以前写的,但是后来手机换号了,又注册新号开始继续写blog。旧文章不能合并到新账号,就以转载的形式纪念下过去
环境:ubuntu 16.04/mysql 5.7.16
今天使用mysql的时候出现了下面这种情况:
mysql> show databases;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
根据错误提示进行重置密码:
mysql> set password=password(‘123321’);
Query OK, 0 rows affected, 1 warning (0.00 sec)
然后要注意的是,mysql有个设置密码周期的地方,我们可以用下面命令来进行查看,先进入数据库以下我做的操作都是root下进行的:
mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> select password_lifetime from user where User=‘root’;
±------------------+
| password_lifetime |
±------------------+
| NULL |
±------------------+
1 row in set (0.00 sec)
可以看出此时系统默认设置为空,也就是说,你如果改了密码,你下次再登录就会因为密码过期而出现问题.
所以接下来,我们要对密码的有效期进行设置:
mysql> update user set password_lifetime=90 where User=‘root’;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
这是将密码有效期设置成90天,如果要设置成为永远有效,可以像下面这样:
mysql> update user set password_lifetime=0 where User=‘root’;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
或者这样设置为永远有效:
mysql> alter user ‘root’@’%’ password expire never;
Query OK, 0 rows affected, 1 warning (0.00 sec)
最后刷新下权限:
mysql> flush privileges;
Query OK, 0 rows affected, 1 warning (0.00 sec)
完成