Description:
Seen on server that was running MySQL-server 5.5.16 and which I've just tried to upgrade to 5.6.10. I had run (to be sure, given a previous issue) mysql_upgrade on the 5.5.16 version prior to performing the upgrade.
I then installed the 5.6.10 version but could not login to use mysql_upgrade as I had an old password (short hash) for the root@localhost user.
While trying to resolve this I crashed 5.6.10 when doing SET @@session.old_passwords = 0, followed by GRANT USAGE on *.* to root@localhost IDENTIFIED by 'password' (trying to create a "long password".)
Note: the documentation on how to solve this didn't seem very clear. I was aware of the old_passwords setting but hadn't noticed the secure-auth. This situation is a bit of a pain to solve when you want to run mysql_upgrade and it won't let you in because of the short password.
Finally resolved this by doing an explicit SET @@session.old_passwords = 0; SELECT PASSWORD('password') /* to get the long password */;
UPDATE mysql.user SET Password = 'hash_from_above' WHERE User = 'root' and Host = 'localhost' ;
Just was not expecting 5.6.10 to crash.
How to repeat:
start mysql 5.6.10 with a user with a short password, and have /etc/my.cnf secure-auth = 0.
login to mysql with the user (this assumes user with full privileges)
run:
SET @@session.old_passwords = 0;
GRANT USAGE ON *.* to root@localhost IDENTIFIED BY 'xxxxxxxxxxxx';
crash info to be attached.
Suggested fix:
don't crash.