升级mysql一定要执行mysql_upgrade

By | 2014 年 10 月 17 日

最近由于需要远程访问mysql,尝试建立一个允许远程登录的mysql账户
使用root登录并创建一个用户:
包括

CREATE USER
GRANT

都提示:

ERROR 1045 (28000): Access denied for user ‘root’@’localhost’ (using password: YES)

不论如何查这个问题,包括把系统schema – mysql中的所有表查看一遍,重新手工建立root用户,都没有发现异样。

同时为了方便,尝试使用了MySQL WorkBench进行远程调试。但它在查看schema所有表的时候出现了一个问题:

Cannot load from mysql.proc. The table is probably corrupted

这引起了我的注意。立刻搜索,发现升级mysql从5.1->5.5的过程中,系统表会有一些变化,会导致此问题。
回忆起解决emoji问题时,数据库从5.1升级到了5.6,而数据文件依然使用的是从前的,判定应该是这个问题造成的。
这时只需要执行

mysql_upgrade

即解决了此问题。

最后,以后升级mysql的时候,要查看官方的升级文档,同时一定要执行mysql_upgrade!!

发表评论