linux+mysql+密码过期_【札记】Linux下 MySQL-5.7.17 tar.gz 包方式安装部署后出现密码过期的问题解决(不修改/etc/my.cnf文件)...

【问题描述】

在Oracle linux 6.8上安装完成MySQL-5.7.17(使用版本为:mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz)后:

[root@shh ~]# mysql --version

mysql  Ver 14.14 Distrib 5.1.73, for redhat-linux-gnu (x86_64) using readline 5.1

# service mysqld start

命令行启动正常,登录出现问题:

[root@shh ~]# 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.

根据提示:密码过期,必须使用一个mysql客户端登录修改密码后才能使用。

mysql的提示与日志提示都是比较模糊的,只能根据经验进行问题排查。

【解决方法】

使用以下方式解决:

1、关闭mysql服务

[root@shh ~]# service mysqld status

MySQL running (30500)[  OK  ]

[root@shh ~]#

[root@shh ~]#

[root@shh ~]# service mysqld stop

Shutting down MySQL..[  OK  ]

[root@shh ~]#

2、进入mysql的工作目录 /usr/local/mysql/bin 使用mysql安全模式启动mysql,跳过mysql的登录权限验证

[root@shh ~]# cd /usr/local//mysql/bin/

[root@shh bin]# ./mysqld_safe --skip-grant-tables &

[1] 1557

[root@shh bin]# 2017-10-11T01:35:35.836730Z mysqld_safe Logging to '/usr/local/mysql/data/shhy-dw-application.err'.

2017-10-11T01:35:35.840516Z mysqld_safe Logging to '/usr/local/mysql/data/shhy-dw-application.err'.

2017-10-11T01:35:35.868903Z mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/data

执行完命令后,mysql会自动安全模式重启(注意:切记此时不要在再此shell窗口进行任何操作),此时,则新开ssh窗口或者使用远程机器(已安装MySQL客户端的Windows)的命令行进行连接访问:

3、命令行连接mysql数据库。此时无需指定密码。

[root@shh ~]# mysql -h10.10.9.35 -uroot

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 8

Server version: 5.7.17 MySQL Community Server (GPL)

Copyright (c) 2000, 2013, 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> 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 user,host,authentication_string,password_expired from mysql.user;

+-----------+-----------+-------------------------------------------+------------------+

| user      | host      | authentication_string                     | password_expired |

+-----------+-----------+-------------------------------------------+------------------+

| root      | localhost | *895A2D9FF0E9EFA56E84678045BB050034435B72 | Y                |

| mysql.sys | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | N                |

+-----------+-----------+-------------------------------------------+------------------+

2 rows in set (0.00 sec)

mysql> update user set authentication_string=password('admin321') where user='root';

Query OK, 1 row affected, 1 warning (0.00 sec)

Rows matched: 1  Changed: 1  Warnings: 1

mysql> update user set password_expired='N' where user='root';

Query OK, 1 row affected (0.00 sec)

Rows matched: 1  Changed: 1  Warnings: 0

mysql> update user set host='%' where user=root;

ERROR 1054 (42S22): Unknown column 'root' in 'where clause'

mysql> update user set host='%' where user='root';

Query OK, 1 row affected (0.00 sec)

Rows matched: 1  Changed: 1  Warnings: 0

mysql> select user,host,authentication_string,password_expired from mysql.user;

+-----------+-----------+-------------------------------------------+------------------+

| user      | host      | authentication_string                     | password_expired |

+-----------+-----------+-------------------------------------------+------------------+

| root      | %         | *2A29AD291780ABA691DA40E5900F63BCD40CB849 | N                |

| mysql.sys | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | N                |

+-----------+-----------+-------------------------------------------+------------------+

2 rows in set (0.00 sec)

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)

4、如需要可永久关闭mysql密码过期功能限制:

修改全局配置文件  /etc/my.cnf   或者 /usr/local/mysql/support-files/my-default.cnf 文件(最后同时加上)

如下(如有则直接修改):

[mysqld]

default_password_lifetime=0

5、关闭当前使用安全MySQL模式的服务,直接kill -9 解决

^C

[root@shh bin]#

[root@shh bin]#

[root@shh bin]#

[root@shh bin]# ps -ef|grep mysql

root      1557  1437  0 09:35 pts/1    00:00:00 /bin/sh ./mysqld_safe --skip-grant-tables

mysql     1643  1557  0 09:35 pts/1    00:00:02 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --skip-grant-tables --log-error=/usr/local/mysql/data/shhy-dw-application.err --pid-file=/usr/local/mysql/data/shhy-dw-application.pid

root      1743  1719  0 09:51 pts/0    00:00:00 mysql -h10.10.9.35 -uroot

root      1953  1437  0 10:45 pts/1    00:00:00 grep mysql

[root@shh bin]# kill -9  1557

[root@shh bin]# kill -9  1643

[1]+  Killed                  ./mysqld_safe --skip-grant-tables

[root@shh bin]# ps -ef|grep mysql

root      1743  1719  0 09:51 pts/0    00:00:00 mysql -h10.10.9.35 -uroot

root      1956  1437  0 10:46 pts/1    00:00:00 grep mysql

重启服务,即可使用修改后的密码admin321进行访问了。 [root@shh bin]# service mysqld status MySQL is not running, but PID file exists[FAILED] [root@shh bin]# service mysqld start Starting MySQL[  OK  ] [root@shh bin]# ps -ef|grep mysql root      1997     1  0 10:48 pts/1    00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/usr/local/mysql/data --pid-file=/usr/local/mysql/data/shhy-dw-application.pid mysql     2099  1997  5 10:48 pts/1    00:00:00 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/usr/local/mysql/data/shhy-dw-application.err --pid-file=/usr/local/mysql/data/shhy-dw-application.pid root      2131  1437  0 10:48 pts/1    00:00:00 grep mysql [root@shh bin]#  [root@shh bin]# mysql -uroot -p Enter password:  Welcome to the MySQL monitor.  Commands end with ; or \g. Your MySQL connection id is 3 Server version: 5.7.17 MySQL Community Server (GPL) Copyright (c) 2000, 2013, 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> 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


版权声明:本文为weixin_42515795原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。