[MYSQL] 使用 SQL 語法 快速建立使用者帳號

使用 phpMyAdmin 的圖形介面(GUI)來設定 MySQL 使用者權限雖然直觀,但在建立大量帳號或需要精確、批次管理權限時,直接使用 SQL 語法會是更快、更安全、更有效率的方法。

其實只要三行簡單的 SQL 語法,就能從零開始建立一個新帳號,並賦予所需的權限。


三行語法快速建立新使用者

我們將以建立一個名為 report_user 的帳號為例,目標是只讓它能讀取 product_db 資料庫中的 sales_data 資料表。

1:建立使用者並設定密碼

這是建立使用者帳號並設定初始密碼的第一步。請務必使用一個強密碼。

-- CREATE USER '使用者名稱'@'連線來源' IDENTIFIED BY '密碼';
CREATE USER 'report_user'@'%' IDENTIFIED BY 'StrongP@ssw0rd!';
參數 說明
'report_user' 您要創建的使用者名稱。
'%' 連線來源。 % 代表允許從任何 IP 位址連線。如果只允許從本機連線,請改用 'localhost'。
'StrongP@ssw0rd!' 設定該帳號的登入密碼。

💡 注意: 執行此指令後,該使用者已經具備最基礎的連線能力 (USAGE 權限),有些教學文章會在建立帳號後,接一個給予連線能力的SQL語法,其實可以省略。

2:授予操作權限

這是關鍵步驟。我們只授予使用者讀取(SELECT)特定資料表的權限,確保它不能新增、修改或刪除任何資料。

-- GRANT 權限列表 ON `資料庫名稱`.`資料表名稱` TO '使用者名稱'@'連線來源'; GRANT SELECT ON `product_db`.`sales_data` TO 'report_user'@'%';
權限 說明
SELECT 唯讀權限,允許查詢資料。
ON product_db.sales_data 精確指定權限作用的範圍:只針對 product_db 資料庫中的 sales_data 資料表。

如果要給予所有資料表的讀取權限?

將資料表名稱替換成 * 即可 GRANT SELECT ON product_db.* TO 'report_user'@'%';

3:重新載入權限設定

在任何授權(GRANT)或撤銷權限(REVOKE)操作之後,您都必須執行此指令,才能讓 MySQL 伺服器立即讀取並套用新的權限設定,無需重啟服務。

FLUSH PRIVILEGES;

未來帳號管理進階指令

如果您想修改或刪除這個帳號,這裡有幾個常用的 SQL 語法:

目的 SQL 語法 備註
修改密碼 ALTER USER 'report_user'@'%' IDENTIFIED BY 'NewSecurePwd'; 這是比舊版 SET PASSWORD 更推薦的現代語法。
撤銷權限 REVOKE SELECT ON product_db.sales_data FROM 'report_user'@'%'; 收回該使用者對該表的 SELECT 權限。
刪除帳號 DROP USER 'report_user'@'%'; 徹底移除該使用者及其所有權限。

總結

透過這三個簡單 SQL 語法,您就能快速又安全地建立一個擁有精確權限範圍的新使用者。記住,資料庫安全的黃金法則是「只給予執行任務所需的最小權限」,而 SQL 語法正是實踐這一原則的最佳工具!

備註:
如果你要快速的幫一個新來的程式工程師建立一個可以 CRUD+建表+改表(索引) 的使用者帳號(例如:mis007),語法如下:

CREATE USER 'mis007'@'%' IDENTIFIED BY 'mis007_Password';
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, ALTER ON *.* TO 'mis007'@'%';
FLUSH PRIVILEGES;