MySQL列出資料庫中所有使用者

2019-10-16 22:55:53

本教學將向您展示如何在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 | yiibaidb | Sleep   |
| root | localhost:55313 | NULL     | Query   |
| root | localhost:52939 | mysql    | Sleep   |
+------+-----------------+----------+---------+
4 rows in set

正如使用可以看到的,目前有四個使用者登入在MySQL資料庫中,一個是執行「查詢」狀態,其它三個是「睡眠」狀態。

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