ERROR 1449 (HY000): The user specified as a definer (‘mysql.infoschema’@‘localhost’) does not exist
前言
前几使用mysql,突然发现无法使用show databases;查看已有数据库。找了很多的博文也没有解决,今天终于弄好了分享以下解决办法。
错误提示
错误提示信息:
进入数据库之后,输入show databases;提示
ERROR 1449 (HY000): The user specified as a definer (‘mysql.infoschema’@‘localhost’) does not exist
网上搜了许多解决办法是:
输入:mysql_upgrade -uroot -p
如下图:
但是mysql_upgrade这个方法官方已经弃用了,然后貌似最好的办法就是下载新的版本,但是这种方法过与麻烦。
首先看以下输入mysql_upgrade -u root -P3306 -p的结果:
大概意思是:
mysql_upgrade:[警告]在命令行界面上使用密码可能不安全。
现在不建议使用mysql_upgrade客户端。现在,升级客户端执行的操作由服务器完成。
要升级,请使用较旧的数据目录启动新的MySQL二进制文件。修复用户表是自动完成的。升级后不需要重新启动。
升级过程会在运行带有旧数据目录的新MySQL二进制文件时自动开始。为避免意外升级,请对MySQL二进制文件使用–upgrade = NONE选项。还提供了选项–upgrade = FORCE来按需运行服务器升级序列。
由于多种原因,服务器升级可能会失败。在这种情况下,升级序列将在下一次MySQL服务器启动期间再次运行。如果服务器升级反复失败,则可以使用–upgrade = MINIMAL选项启动服务器,以在不执行升级序列的情况下启动服务器,从而允许用户手动解决问题。
所以,我i们就使用--upgrade = FORCE参数来升级。
解决办法
第一步:首先要关闭mysql服务:(在CMD命令框中输入)
net stop mysql #关闭服务

第二步:进入你的mysql安装路径中的bin目录下
在cmd中输入 cd /d [路径]
如我的是在D盘
第三步:最重要的一步!!!!!!
输入mysqld.exe --upgrade=FORCE
也可以输入:[路径] --upgrade=FORCE
如我的在D盘:
D:\MYSQL\mysql-8.0.18-winx64\bin>D:\MYSQL\mysql-8.0.18-winx64\bin\mysqld.exe --upgrade=FORCE
然后要等待一会,一般大约会1~2分钟。有的可能会更久,同时要确保电脑有网络。这时候一定不要心急,因为马上就要成功了。
第三步如果一直没有反应,等待一会后可以ctrl+c结束
第四步:其实这时候就已经大功告成了,
打开MySQL服务
net start mysql #打开服务

最后打开MySQL 输入 show databases;就会发现已经可以了。

ps:尽量在执行第一步之前,首先在mysql数据库中输入下面这条指令SET GLOBAL innodb_fast_shutdown = 1;之后在按照步骤来做。
结语
遇到问题一定不要烦躁不安,首先要上自己去寻找解决办法。这要在以后遇到问题的时候也会能轻松应付。最后如果本篇文章对你有帮助,那真是我的荣幸。goodbye!
如有问题请留言讨论。
END!