首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 多使用者管理:新增使用者與權限控制實務

     編輯:MySQL 資料庫相關知識

預設帳號與安全現狀

全新安裝的 MySQL 僅有 root@localhost 超級帳號,無密碼。生產環境必須建立專用帳號並遵循最小權限原則。

方法一:GRANT 語句(推薦)

-- 建立可從任意主機連線、擁有 test 資料庫 SELECT 權限的帳號
GRANT SELECT ON test.* TO 'yonghu'@'%' IDENTIFIED BY 'some_pass' WITH GRANT OPTION;

-- 建立僅限本機、具完整權限的管理帳號
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' IDENTIFIED BY 'strong_pwd' WITH GRANT OPTION;
FLUSH PRIVILEGES;

方法二:直接操作 mysql.user 表(進階)

USE mysql;
INSERT INTO user (Host, User, Password) VALUES ('localhost', 'shagua', PASSWORD(''));
FLUSH PRIVILEGES;

需手動設定各權限欄位(Select_priv, Insert_priv 等),不建議新手使用。

常用權限項目對照表

權限欄位名說明作用層級
SELECTSelect_priv查詢資料表
INSERTInsert_priv新增資料表
UPDATEUpdate_priv修改資料表
DELETEDelete_priv刪除資料表
CREATECreate_priv建立資料庫/表/索引資料庫/表
DROPDrop_priv刪除資料庫/表資料庫/表
GRANTGrant_priv授權給他人資料庫/表
SHUTDOWNShutdown_priv關閉服務器服務器管理
FILEFile_priv讀寫伺服器檔案檔案存取

密碼修改四種方式

-- 1. mysqladmin(命令列)
mysqladmin -u root -p'oldpwd' password 'newpwd'

-- 2. SET PASSWORD(需登入 MySQL)
SET PASSWORD FOR 'user'@'host' = PASSWORD('newpwd');

-- 3. UPDATE user 表
UPDATE mysql.user SET Password=PASSWORD('newpwd') WHERE User='user' AND Host='host';
FLUSH PRIVILEGES;

-- 4. GRANT ... IDENTIFIED BY(同時授權與設密)
GRANT USAGE ON *.* TO 'user'@'host' IDENTIFIED BY 'newpwd';

最佳實踐建議

  • 根帳號必須設定強密碼並限制 root@localhost 仅本機登入
  • 應用程式使用專用帳號,僅授予必要權限
  • 定期審核 mysql.user 表,移除無用帳號
  • MySQL 4.1+ 密碼雜湊演算法變更,舊客戶端需用 OLD_PASSWORD() 相容
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved