mysql升级8.x之后无法连接数据库的解决方法

今天在本地把以前的老博客(基于emlog)运行的时候提示“连接数据库出错”,这个老博客是emlog开源程序写的,之前在本地是跑起来过的,只是最近有段时间没跑了。

想了一下,难道是mysql密码改了?于是翻箱倒柜找到密码,然后执行以下命令连接:

1
mysql -u root -p

能正常连接,但是当我输入 show databases; 时,有个诡异的提示:

1
The user specified as a definer ('mysql.infoschema'@'localhost') does not exist

难道是跟什么权限有关吗。 在google里搜了一下,有些是给出一些权限相关的修复方式,但是我执行了一下发现提示有语法错误。

显然,我是mysql版本有点过高了(而我的包括系统表在内的db数据文件依然是老版本的mysql创建的)。那么就在搜索关键字里加上一句 mysql 8 再重新搜索,结果就找到了解决方案: 由于mysql8升级后系统表的基础架构可能有改动,因此需要手动执行以下mysql8的升级指令

1
mysql_upgrade -u root -p

随着一堆的 OK 进度完成,数据库就修复好了。

refer

https://www.shiqidu.com/d/358