Mysql错误:在尝试转储表空间时,指定为定义者的用户('mysql.infoschema'@'localhost')不存在

时间:2018-04-24 03:09:44

标签: mysql

在我将MySQL 5.7升级到MySQL 8.0之后,我再次启动了MySQL并且出现了错误:在尝试转储表空间时,指定为定义者的用户('mysql.infoschema'@'localhost')不存在。 我不明白为什么会出现这个问题。我想知道如何解决它

3 个答案:

答案 0 :(得分:162)

当我意外地将我的MySQL版本从8降级到5.7时,我遇到了同样的错误。在第一次启动时,旧版本破坏了某些东西,因此版本8显示上面的错误。 在我的情况下,我必须进入MySQL首先运行的docker容器

docker exec -it mysql bash

然后我基本上遵循了步骤here

mysql -u root -p
mysql> SET GLOBAL innodb_fast_shutdown = 1;
mysql_upgrade -u root -p

这需要几分钟但是一切都恢复了。

答案 1 :(得分:10)

设置新系统一段时间后可能会发生这种情况。

作为建议的解决方案,只需试试Windows

即可

1)以管理员身份打开cmd.exe

2)运行mysql_upgrade.exe -uyour_user_name -pyour_password

mysql_upgrade.exe位于

C:\Program Files\MySQL\MySQL Server 8.0\bin

然后运行以下命令以查看infoschema用户是否已出现。

select user, host from mysql.user;

答案 2 :(得分:0)

在我的情况下,这种错误是由于我将dba用户的主机从%更改为localhost所引起的。

我使用具有DDL权限的“ abcdba”来创建数据库模式,并使用具有CURD权限的“ abc”来使Web服务使用该数据库。更改后,读取操作正常,但写入操作失败,并在OP中显示错误消息。

刷新特权或重新启动服务器不能解决问题。然后,我将dba用户的主机更改回%。然后事情又恢复了正常。

显然,mysql不喜欢dba用户的主机的更改,并且如果dba用户的主机被更改,则由该dba用户创建的现有数据库将出现问题。

本质上,更改dba用户的主机实际上是在删除用户abcdba @%并创建一个新用户abcdba @ localhost。错误消息出现在这里,因为abcdba @%和abcdba @ localhost是2个完全限定的用户名。