【问题标题】:Mysql Error:The user specified as a definer ('mysql.infoschema'@'localhost') does not exist' when trying to dump tablespacesMysql 错误:尝试转储表空间时,指定为定义者的用户 ('mysql.infoschema'@'localhost') 不存在'
【发布时间】:2018-10-04 04:40:35
【问题描述】:

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

【问题讨论】:

    标签: mysql


    【解决方案1】:

    当我不小心将我的 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
    

    这需要几分钟,但随后一切都恢复正常了。

    【讨论】:

    • 谢谢。这对我有用,当我无法将他连接到 mysql-server 时,它也解决了 MySQL Workbench 的问题。
    • 当 OSX 上的自制软件更新 Maria 并将我锁定在我的开发数据库之外时,这发生在我身上。谢谢!!
    • 你拯救了我的一天。
    • 再添加一条“你拯救了我的一天”的评论。有时 docker 不是你的朋友。
    • 这个答案也适用于非基于 docker 的 MySQL 安装。
    【解决方案2】:

    它可能会在您设置新系统后的一段时间后发生。

    作为建议的解决方案,请在 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;
    

    【讨论】:

    • 在 mac os x 上也像冠军一样工作? mysql_upgrade 来自终端。
    • mysql_upgrade -u root 在 macOS high Sierra 中也为我工作
    【解决方案3】:

    在我的情况下,这样的错误是因为我将 dba 用户的主机从 % 更改为 localhost 以增强安全性。

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

    刷新权限或重新启动服务器并没有解决问题。然后我将 dba 用户的主机改回 %.然后一切又恢复了正常。

    显然mysql不喜欢dba用户host的变化,如果dba用户的host发生变化,该dba用户创建的现有数据库就会出现问题。

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

    【讨论】:

      猜你喜欢
      • 2022-01-14
      • 2020-09-19
      • 2016-11-16
      • 2012-04-27
      • 2019-01-04
      • 2017-02-16
      • 2013-12-09
      • 2021-07-28
      相关资源
      最近更新 更多