【问题标题】:MariaDB 10.4.10 ERROR 1146 (42S02): Table 'mysql.user' doesn't existMariaDB 10.4.10 错误 1146 (42S02): 表 'mysql.user' 不存在
【发布时间】:2020-04-13 11:08:24
【问题描述】:

我了解在 MariaDB 10.4.1 中,mysql.user 表已被 mysql.global_priv 表替换。 The documentation 说“mysql.user 现在是一个视图”。当我使用套接字连接以 root 身份登录全新安装(在 os x 上使用自制软件)时,我看不到此视图。这导致我的 GUI (sequel pro) 无法工作。我是否缺少创建此向后兼容视图的设置步骤?

MariaDB [(none)]> select * from mysql.user;
ERROR 1146 (42S02): Table 'mysql.user' doesn't exist

【问题讨论】:

  • 这能回答你的问题吗? Table 'mysql.user' doesn't exist:ERROR
  • 我不相信这能回答它。我现在确实相信这是与权限相关的。 MariaDB 有两个“全能”用户,root 和安装它的用户。当我以安装它的用户(也是拥有所有数据目录的用户)身份登录时,我可以看到该视图。
  • 好的,现在我可以以 root 用户和本地用户的身份看到它,我发誓我没有改变任何东西。 叹息
  • 有时我们不知道为什么它突然停止工作,为什么它什么也没做就又开始工作了。这就是编程的美妙之处。
  • 检查 GRANT。

标签: mysql macos mariadb homebrew


【解决方案1】:

这可能是也可能不是导致您出现问题的原因,但它只是为我解决了这个问题 - 尽管我认为我已经检查了上下、前后,但结果仍然是权限问题。

在我的情况下,报告丢失的不仅是mysql.user,还有mysql.columns_priv(当我尝试刷新权限时)。我可以use mysql 就好了,但是之后show tables 给了我以下错误:

错误 1018 (HY000): 无法读取 './mysql/' 的目录 (errno: 13 "Permission denied")

这对我来说并没有立即理解,但这显然意味着 MariaDB 服务器使用的 _mysql 用户无法读取 mysql 数据目录。

我将 MariaDB 作为 Homebrew 服务运行,因此我查看了 MariaDB MXCL plist 文件(位于您的 Homebrew Cellar 文件夹中;对我来说是 /usr/local/Cellar/mariadb/10.4.10_1/homebrew.mxcl.mariadb.plist):在密钥 ProgramArguments 下,应该有一个 @987654329 @ 参数指定 MariaDB 使用哪个目录来存储数据。我的是/usr/local/var/mysql,我猜这是标准的。

在我的例子中,我之前有一个 MySQL 5.6 的常规(即非 MariaDB)安装,它使用了相同的数据目录,这可能是罪魁祸首——当我查看该目录的权限时,它是归我自己的用户所有,_mysql 用户只有读取权限。

一旦我授予_mysql 对该文件夹的读写权限,你瞧,我的mysql.user 视图以及mysql 数据库中的所有其他内容突然出现在视图中,并且完全按照预期工作。

【讨论】:

    猜你喜欢
    • 2014-05-15
    • 1970-01-01
    • 1970-01-01
    • 2021-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-27
    • 2019-02-12
    相关资源
    最近更新 更多