如何在Linux中檢查MySQL用戶權限?
在任何操作系統上首次/全新安裝 MySQL僅將 root 用戶視為默認數據庫用戶,第一個數據庫事務/活動僅由 root 用戶執行。
因此,對于任何需要訪問 MySQL 數據庫以通過 root 用戶憑據獲得訪問權限的用戶來說,它并不理想,根用戶訪問權限應保留給數據庫管理員,然后他們將使用根用戶憑據創建數據庫用戶并授予執行不同數據庫查詢的權限。
對于數據庫管理員來說,避免使用 root 用戶訪問MySQL數據庫,而是創建另一個用戶并授予該用戶與 root 用戶相同的訪問和執行權限也是理想的做法。
本文指南非常適合MariaDB、MySQL 企業版和MySQL 社區版用戶,為了演示如何檢查 MySQL 用戶權限,我們將首先創建具有不同 MySQL 權限的不同測試用戶。
創建一個新的 MySQL 用戶
首先,使用以下命令從 Linux 終端獲取對MySQL數據庫的 root 訪問權限:
- $ mysql -u root -p
創建 MySQL 用戶的命令語法如下:
- CREATE USER 'username'@'localhost' IDENTIFIED BY 'your_user_password';
上述用例適用于安裝在本地機器上的 MySQL,如果您使用的是遠程機器/服務器,則必須將'username'@'localhost'替換為'username'@'remote_machine_ip_address'。
如果您希望用戶無需指定主機名或 IP 地址即可連接到任何 MySQL 安裝系統,請遵循以下命令語法:
- CREATE USER 'username'@'%' IDENTIFIED BY 'your_user_password';
現在讓我們創建幾個 MySQL 數據庫用戶。
- CREATE USER 'user1'@'localhost' IDENTIFIED BY 'password1';
- CREATE USER 'user2'@'localhost' IDENTIFIED BY 'password2';
- CREATE USER 'user3'@'%' IDENTIFIED BY 'password3';
請注意,這些用戶用于演示目的,因此請考慮為您的生產環境創建更強的數據庫用戶密碼。

授予新 MySQL 用戶權限
下一步是為這些創建的數據庫用戶分配不同的角色(用戶權限),這些用戶權限與允許不同數據庫用戶執行的數據庫操作有關。
我們可以將這些權限細分為:
- 所有權限:分配此權限的用戶可以執行所有數據庫角色。
- 插入:分配此權限的用戶可以插入數據庫表行數據。
- Delete:被賦予此權限的用戶可以刪除數據庫表行數據。
- 創建:分配此權限的用戶可以創建不存在的數據庫和表。
- Drop:分配此角色的用戶可以刪除現有的數據庫和表。
- 選擇:分配此權限的用戶可以讀取數據庫信息。
- 更新:分配此權限的用戶可以修改數據庫表行數據。
授予選項:分配此權限的用戶可以修改其他數據庫用戶帳戶的權限。
例如,如果我們要授予user1對所有數據庫和表的所有權限,就像 root 用戶一樣,我們將執行以下命令:
- GRANT ALL PRIVILEGES ON *.* TO 'user1'@'localhost';
如果我們要授予user2對特定數據庫(例如mysql)的所有數據庫表的所有權限,我們將執行以下命令:
- GRANT ALL PRIVILEGES ON mysql.* TO 'user2'@'localhost';
如果我們要授予user3僅創建新 MySQL 用戶的權限,我們將執行以下命令:
- GRANT INSERT ON mysql.user TO 'user3'@'%';
在 MySQL 中檢查用戶權限
要檢查用戶的數據庫權限,請參考命令語法:
- SHOW GRANTS FOR username;
要檢查這三個用戶權限:
- SHOW GRANTS FOR user1@localhost;
- SHOW GRANTS FOR user2@localhost;
- SHOW GRANTS FOR user3;

要撤銷用戶分配的權限,請參考命令語法:
- REVOKE permission_type ON database.table FROM 'username'@'hostname';
例如;
- REVOKE INSERT ON mysql.user FROM user3;



























