修改my.cnf/my.ini文件中的secure_auth为0就可以用旧密码登录了,登录后修改SESSION的old_passwords值,再把所有的旧密码修改为新密码即可。
[mysqld] 
old_passwords = 0
secure_auth = 1 mysql> show variables like 'old_passwords';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| old_passwords | 1     |
+---------------+-------+
1 row in set (0.00 sec)mysql> select password('mypass');
+--------------------+
| password('mypass') |
+--------------------+
| 6f8c114b58f2ce9e   |
+--------------------+
1 row in set (0.00 sec)mysql> set @@session.old_passwords=0;
Query OK, 0 rows affected (0.00 sec)mysql> show variables like 'old_passwords';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| old_passwords | 0     |
+---------------+-------+
1 row in set (0.00 sec)mysql> select password('mypass');
+-------------------------------------------+
| password('mypass')                        |
+-------------------------------------------+
| *6C8989366EAF75BB670AD8EA7A7FC1176A95CEF4 |
+-------------------------------------------+
1 row in set (0.00 sec)mysql> use mysql
Database changed
mysql> update user set password=password('root123') where user = 'root';
Query OK, 4 rows affected (0.00 sec)
Rows matched: 4  Changed: 4  Warnings: 0