如何列出我的 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 中进行选择:-)