列出 MariaDB 的所有用户

列出 MariaDB 的所有用户

如何列出我的 MariaDB 中的所有用户?

互联网上充斥着

SELECT user FROM mysql.user;

及其所有变体,但这在 MariaDB 上不起作用(如果这很重要的话,我使用的是 10.5.19 版本),而是会产生错误(以 root 权限运行):

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

我只发现一条评论有点帮助:https://stackoverflow.com/a/64841540

MariaDB-10.4+ 是mysql.user一个视图而不是表。

[…] 请务必检查官方文档。

重点是,我做过查看官方文档,但它似乎默认你已经知道你的用户名。我没有找到任何关于如何获取这些用户名的说明,即如何仅显示用户列表。

答案1

官方文档mysql.user 表(Google 搜索结果中的第一个结果mysql.user site:https://mariadb.com/kb/)有你的答案:

在 MariaDB 10.4 及更高版本中,mysql.global_priv桌子已经取代了mysql.user表格,mysql.user应该被视为过时。现在它是一个看法为兼容旧应用程序和监控脚本而mysql.global_priv创建的。新工具应该使用INFORMATION_SCHEMA表格。

因此,为了向后兼容,您仍然可以使用:

SELECT User FROM mysql.global_priv;

这也可能有用:

SELECT GRANTEE 
FROM INFORMATION_SCHEMA.USER_PRIVILEGES 
GROUP BY GRANTEE;

答案2

好吧,它是一个视图并不重要,无论如何你应该能够从 mysql.user 中选择用户...你收到的错误消息表明你正在连接的用户没有权限从 mysql.user 中选择...所以尝试:

echo select User from mysql.user | mysql -u root

如果有效,请确保您连接的用户有权从 mysql.user 中进行选择:-)

相关内容