在我将MySQL 5.7升级到MySQL 8.0之后,我再次启动了MySQL,我得到了一个错误:在尝试转储表空间时,指定为定义者的用户('mysql.infoschema'@'localhost')不存在。我不明白为什么会出现这个问题。我想知道如何解决这个问题
发布于 2018-05-01 21:20:16
当我意外地将我的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这花了几分钟时间,但随后一切都恢复了正常。
发布于 2018-04-29 07:20:05
它可能会在您设置新系统一段时间后发生。
作为一个建议的解决方案,只需在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;发布于 2018-12-12 11:39:10
在我的例子中,这样的错误是因为为了加强安全性,我将dba用户的主机从%更改为localhost。
我使用具有DDL权限的"abcdba“创建数据库模式,并使用具有CURD权限的"abc”让Web服务使用数据库。更改后,读取操作正常,但写入操作失败,并在操作中显示错误消息。
刷新权限或重新启动服务器都不能解决问题。然后,我将dba用户的主机更改回%。然后,事情又变得正常了。
显然,mysql不喜欢dba用户主机的更改,如果更改了dba用户的主机,则由该dba用户创建的现有数据库将出现问题。
实际上,更改dba用户的主机实际上是删除用户abcdba@%并创建一个新用户abcdba@localhost。错误消息来了,因为abcdba@%和abcdba@localhost是两个完全限定的用户名。
https://stackoverflow.com/questions/49992868
复制相似问题