MySQL 使用者清單取得方法與權限管理|徹底解說

1. 前言

MySQL 的使用者管理是為了確保資料庫的安全性與有效運作而不可或缺的重要任務。特別是,了解哪些使用者可以存取資料庫、擁有什麼權限,便能實施存取限制與加強安全性。 本文將從 MySQL 使用者列表的顯示方式、取得詳細資訊、使用者的建立與管理方法,以及常見錯誤的處理方式等廣泛說明。透過此篇,您將能了解 MySQL 使用者管理的基本概念與實用操作步驟。

2. 取得使用者列表的方法

要在 MySQL 中取得使用者列表,請使用「mysql.user」資料表。此資料表中儲存了已在 MySQL 註冊的所有使用者資訊,透過簡單的指令即可顯示所需資訊。

使用者列表顯示的基本

首先,登入 MySQL,執行以下指令。
SELECT Host, User FROM mysql.user;
此指令會將每個使用者的「主機名稱」與「使用者名稱」以列表方式顯示。例如,可能會顯示「localhost」或「127.0.0.1」等作為主機名稱,這些分別代表 IPv4 與 IPv6 的本機連線。這是在本機環境的使用者管理中常見的設定。

取得使用者資訊的全部

此外,為了確認更詳細的資訊,也可以使用以下指令顯示「mysql.user」資料表的所有欄位。
SELECT * FROM mysql.user;
此指令會顯示每個使用者的詳細資訊(例如:認證資訊與權限設定),但通常僅指定需要的欄位會比較易讀。善用上述方式可取得更廣泛的資訊,且為了讓輸出視覺上更整齊,選擇特定欄位的做法也很有幫助。

3. 取得使用者的詳細資訊

在 MySQL 中,也可以取得使用者的密碼雜湊與權限資訊。藉此,使用者管理將更加有效率。

密碼雜湊的顯示方式

在 MySQL 中,密碼會被加密,並以雜湊形式儲存在「authentication_string」欄位。使用以下指令,即可確認使用者的主機名稱、使用者名稱以及密碼雜湊。
SELECT Host, User, authentication_string FROM mysql.user;
透過此結果,可確認各使用者是否已設定密碼。雖然會顯示密碼的雜湊值,但無法解密,因而維持安全性。這是檢查新使用者或權限授予情況的非常便利方法。

特定使用者的權限確認

若要查詢使用者在資料庫或資料表上擁有的權限,可使用「SHOW GRANTS」指令。
SHOW GRANTS FOR '使用者名稱'@'主機名稱';
藉此,可列出指定使用者所擁有的全部權限。此指令對於資料庫管理員決定要授予特定使用者哪些權限時非常有幫助。

4. 使用者建立與管理

在 MySQL 中介紹如何建立新使用者,並設定或變更權限。

建立新使用者

若要建立新使用者,請使用「CREATE USER」語句。以下範例示範建立使用者「example_user」並將密碼設定為「password123」。
CREATE USER 'example_user'@'localhost' IDENTIFIED BY 'password123';
建立使用者後,需要執行「FLUSH PRIVILEGES」以使 MySQL 反映此變更。
FLUSH PRIVILEGES;

刪除使用者時的注意事項

若要刪除不需要的使用者,請使用「DROP USER」指令。然而,在刪除使用者之前,確認相關權限與資料的影響非常重要。例如,若被刪除的使用者與其他系統或服務有連結,刪除後可能導致無法存取,需特別留意。

5. 常見錯誤與其解決方案

在 MySQL 的使用者管理中,可能會發生錯誤。此處說明常見錯誤及其解決方法。

權限錯誤「Access denied」

「Access denied」錯誤是因使用者未擁有對資料庫或資料表的適當權限而發生此時,管理員為該使用者授予必要的權限即可解決。可使用以下指令為特定資料庫授予權限。
GRANT ALL PRIVILEGES ON database_name.* TO '使用者名稱'@'主機名稱';
FLUSH PRIVILEGES;

使用者認證錯誤「Unknown user」

「Unknown user」錯誤是因指定的使用者不存在而發生的。若出現此錯誤,請確認使用者名稱與主機名稱是否正確指定,或該使用者是否存在於「mysql.user」資料表中。

密碼相關的錯誤

若發生密碼不符或認證錯誤,可重新設定密碼以解決。請使用以下指令重設密碼。
ALTER USER '使用者名稱'@'主機名稱' IDENTIFIED BY '新密碼';

6. 總結

在本文中,我們說明了取得 MySQL 使用者列表的方法、檢查詳細資訊、使用者的建立與管理,以及常見錯誤與其對策。使用者管理直接關係到資料庫的安全性強化,因此定期檢視使用者資訊與權限、降低未授權存取的風險是很重要的。 善用這些方法,讓 MySQL 安全且高效地運作吧。