MySQL列出資料庫中所有用戶

本教程將向您展示如何在MySQL資料庫中列出用戶。

MySQL顯示用戶:列出所有用戶

要印出所有MySQL中的所有用戶,您是不是想使用MySQL SHOW USERS命令? 不幸的是,MySQL沒有類似SHOW DATABASESSHOW TABLES等那樣的SHOW USERS命令,因此列出MySQL資料庫伺服器中的所有用戶,可使用以下查詢:

SELECT
   user
FROM
   mysql.user;

在此語句中,我們從mysql資料庫的user表查詢用戶數據資訊。

要執行此查詢,您必須以管理員身份登錄到MySQL資料庫伺服器。

C:\Users\Administrator> mysql -u root -p
Enter password: ***********
mysql> use mysql;
Database changed
mysql> SELECT user FROM user;

以下顯示了以上查詢的輸出:

mysql> USE mysql
Database changed
mysql> SELECT user FROM user;
+------------+
| user       |
+------------+
| rfc        |
| superadmin |
| mysql.sys  |
| root       |
| super      |
+------------+
5 rows in set (0.27 sec)

如上所見,在本地資料庫中有五個用戶。

要獲取有關用戶表的更多資訊,可以使用以下命令預覽其列:

DESC user;

例如,要顯示用戶和其他資訊(如主機,帳戶鎖定和密碼到期狀態),請使用以下查詢:

SELECT
    user,
    host,
    account_locked,
    password_expired
FROM
    mysql.user;

執行上面查詢語句,得到以下結果 -

mysql> SELECT
    user,
    host,
    account_locked,
    password_expired
FROM
    mysql.user;
+------------+-----------+----------------+------------------+
| user       | host      | account_locked | password_expired |
+------------+-----------+----------------+------------------+
| root       | localhost | N              | N                |
| mysql.sys  | localhost | Y              | N                |
| superadmin | %         | N              | N                |
| super      | localhost | N              | N                |
| rfc        | %         | N              | N                |
+------------+-----------+----------------+------------------+
5 rows in set

顯示當前用戶

要獲取有關當前用戶的資訊,請使用user()函數,如以下語句所示:

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

或者使用current_user()函數:

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

在本示例的情況下,當前用戶是:root@localhost

顯示當前登錄的用戶

要列出當前登錄MySQL資料庫伺服器的所有用戶,請執行以下語句:

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

執行上面語句,得到以下結果 -

mysql> SELECT
    user,
    host,
    db,
    command
FROM
    information_schema.processlist;
+------+-----------------+----------+---------+
| user | host            | db       | command |
+------+-----------------+----------+---------+
| root | localhost:51897 | NULL     | Sleep   |
| root | localhost:51898 | zaixiandb | Sleep   |
| root | localhost:55313 | NULL     | Query   |
| root | localhost:52939 | mysql    | Sleep   |
+------+-----------------+----------+---------+
4 rows in set

正如使用可以看到的,目前有四個用戶登錄在MySQL資料庫中,一個是執行“查詢”狀態,其他三個是“睡眠”狀態。

在本教學中,您已經學習了如何通過查詢mysql資料庫中的用戶表中的數據來列出MySQL資料庫伺服器中的所有用戶。


上一篇: MySQL管理 下一篇: MySQL全文搜索