在使用 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 中查看用户的详细信息
要想获得关于用户表的更多信息,可以使用下面的命令预览其列。
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 中查看数据库用户是个非常常见的操作,如果能记下来灵活地用可以省不少时间。
最后,如果你用 MySQL 存储数据,且需要搜索功能的话,可以尝试卡拉搜索,几行代码就可以接入,可以极大程度免去搭建和维护索引的烦恼。同时速度极快,可以方便运营和产品轻松调整排序算法。
推荐扩展阅读:
本文参考:
|