MySQL查看所有用户 - MySQL 系列教程

A kitten
蒋川
B 端产品经理,卡拉云联合创始人
最近更新 2022年01月24日

MySQL查看所有用户 - MySQL 系列教程

在使用 MySQL 或其它关系型数据库的时候,免不了需要查看所有用户的信息,比如这些用户分别有什么权限,何时创建的之类。这篇文章里我们讨论,如何在 MySQL 中查看所有用户的信息。

SHOW DATABASES

不幸的是,MySQL没有像 SHOW DATABASES、SHOW TABLES 等那样的列出用户命令。虽然多数关系型数据库的 SQL 部分语法是遵循标准的,但用户管理之类的部分则不一样。

因此,要列出MySQL数据库服务器中的所有用户,你可以使用以下查询。

列出所有用户

用以下语句可以查询所有用户

SELECT 
   user 
FROM 
   mysql.user;

在这条语句中,我们从 mysql 数据库的用户表中查询用户数据。注意这里的 mysql 是你的数据库的名字,在执行时你应该把它替换为你自己的数据库名字,比如说如果你的数据库叫 production 那你需要用类似 use production 这条语句先告诉引擎你需要用的数据库名字。查询时将 FROM 后的值变为 production.user

注:要执行上面这个查询,必须以管理员身份登录

如果需要登录 MySQL 数据库服务器,命令如下

>mysql -u root -p
Enter password: 你的密码
mysql> use mysql;
Database changed
mysql> SELECT user FROM user;

输出结果为:

+-----------+
| user      |
+-----------+
| mysql.sys |
| mysqlxsys |
| root      |
+-----------+
3 rows in set (0.00 sec)

上面输出的结果代表我们的本地数据库中有三个用户。

这里推荐一下可与 MySQL 搭配使用的卡拉云。卡拉云是一套低代码开发工具,可接入常见的数据库(MySQL、MongoDB等)及 RESTful API, 你无需懂会任何前端技术,只要会写 SQL,就可以快速搭建属于你自己的数据库管理工具。>> 深入了解卡拉云 <<

在 MySQL 中查看用户的详细信息

要想获得关于用户表的更多信息,可以使用下面的命令预览其列。

DESC user;

例如,要显示用户和其他信息 如账户锁定,密码到期状态,你使用以下查询:

SELECT 
    user, 
    host, 
    account_locked, 
    password_expired
FROM
    user;

也就是说,你可以用 SELECT 命令查询用户具体的列信息。如果需要创建一个新用户,请参考 MySQL 中创建新用户

MySQL 中如何查看当前用户

这里我们介绍获取当前用户的命令。

user 函数

要获得当前用户的信息,使用user()函数,如下面的语句所示。

mysql> SELECT user();
+-----------------+
| user()          |
+-----------------+
| local@localhost |
+-----------------+
1 row in set (0.00 sec)

current_user 函数

mysql> SELECT current_user();
+----------------+
| current_user() |
+----------------+
| local@localhost |
+----------------+
1 row in set (0.00 sec)

如何查看当前登录状态的 MySQL 用户

如果你有多个用户,现在需要查看哪些用户连接着 MySQL,你可以用以下命令来查询当前登录用户的信息

SELECT 
    user, 
    host, 
    db, 
    command 
FROM 
    information_schema.processlist;

这个命令非常有用,比如你可以查看权限是否有被盗用,是否有未授权的用户登录等。

总结

这篇文章里我们总结了在 MySQL 中,如何查看所有用户,和其它几个查看用户的命令和方式。关于其它 MySQL 相关教程,请参考其它几篇推荐文章。在 MySQL 中查看数据库用户是个非常常见的操作,如果能记下来灵活地用可以省不少时间。

如果你在搭建自己的后台工具,可以试试卡拉云。只要你会写 SQL,完全不用懂前端,简单拖拽,即生成表格、搜索框和按钮组件,你也可以快速把这些组件连接到你的数据库上,快速搭建属于你自己的后台管理工具。数月的开发工作量,使用卡拉云后可缩减至数天。

本文参考:

how-to-get-a-list-of-user-accounts-using-the-command-line-in-mysql

https://www.mysqltutorial.org/mysql-show-users