我刚刚发现MariaDB最新版本的一个愚蠢的新问题,它的视图是mysql.user
。我所有导入的WordPress数据库突然无法从博客连接。当我尝试列出mysql.user时,它显示了以下内容:
> select * from mysql.user;
ERROR 1356 (HY000): View 'mysql.user' references invalid table(s)
or column(s) or function(s) or definer/invoker of view lack
rights to use them
字符串
我们能做些什么来解决这个问题?
编辑:找到了this question,但它没有解决方案,只有一个建议。ALTER USER
命令--在哪里使用以及使用什么设置?我必须以某种方式改变每个博客数据库的权利吗?
2条答案
按热度按时间6rqinv9w1#
更新:
进一步的调查显示,Question中描述的问题,以及我对它的最初回应(下面)可能与 * 表mysql.event* 的定义错误有关。在我的例子中,我有1)从MySQL 5.7.33加载一个完整的转储(包括 mysql 数据库)到新安装的MariaDB10.5.9; 2)发现this was not a good idea; 3)编辑了我的转储文件,以排除mysql数据库,4)重复加载而不删除任何数据库或配置。
这导致数据库正常运行,但是(除了本问题中描述的问题)a)
/usr/sbin/mariadbd --verbose --help
会尝试运行数据库服务器而不是打印帮助,b)启动时总是出现以下错误:字符串
今天,我能够纠正这些问题(在Amazon Linux 2下):
1.卸载MariaDB服务器和MariaDB客户端
1.删除/etc/my.*
1.删除/var/lib/mysql
1.重新安装MariaDB服务器和MariaDB客户端
1.重新加载数据库转储,再次省略MySQL数据库的转储
在这一点上,我不仅有干净的数据库启动和正确的
/usr/sbin/mariadbd --verbose --help
操作,我还发现**select * from mysql.user
工作正常!**因此,无法从 mysql.user 中进行选择的问题似乎并不像我最初认为的那样,是由于 mysql.user 从表到视图的变化,而是由于一些与我的“不正确”数据库迁移有关的其他问题。
我的最初答案:
(仅作为参考)
经过大量的研究,我至少找到了这个问题的一部分答案:
tl;dr:
select * from mysql.global_priv
则每个用户show grants for 'XXX'@'localhost'
;较长版本,从Authentication in MariaDB 10.4 — Understanding the Changes开始:
密码存储已更改。所有用户帐户、密码和全局权限现在都存储在mysql.global_priv表中。mysql.user表发生了什么?它仍然存在,并且有与以前完全相同的列集,但它mysql.global”
上面提到的文章不仅提供了“what”,还提供了“why”。我并不完全同意。特别是声明 * 旧的mysql.user表仍然存在,你可以像以前一样从它中选择 *,但你不能(因此这个问题)。尽管如此,我还是松了一口气,从MariaDB中找到了一个相对连贯的解释。
最后,这里有一个例子:
型
ui7jx7zq2#
您还可以使用以下命令插入缺少的权限:
字符串