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

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

要撤銷(xiāo)用戶(hù)分配的權(quán)限,請(qǐng)參考命令語(yǔ)法:
- REVOKE permission_type ON database.table FROM 'username'@'hostname';
例如;
- REVOKE INSERT ON mysql.user FROM user3;
