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

MySQL用戶創建兩大法:GRANT語句與直操授權表

     編輯:MySQL 資料庫相關知識

推薦:GRANT語句法(簡明、少錯)

前提:本機以root登入,root擁有INSERT+RELOAD權限。

典型示例

-- 超級用戶monty,任意主機,密碼something
GRANT ALL PRIVILEGES ON *.* TO monty@localhost IDENTIFIED BY 'something' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO monty@"%" IDENTIFIED BY 'something' WITH GRANT OPTION;

-- 管理員admin,本機免密,僅RELOAD/PROCESS權限
GRANT RELOAD,PROCESS ON *.* TO admin@localhost;

-- 佔位用戶dummy,本機免密,無實權限(USAGE)
GRANT USAGE ON *.* TO dummy@localhost;

關鍵細節

  • monty@localhost與monty@%**雙方必建**:匿名用戶@localhost優先級更高,單建%會被匿名用戶攔截
  • WITH GRANT OPTION允許該用戶授權給他人
  • USAGE=無權限,僅創建用戶記錄,後續再GRANT具體權限

替代法:直操mysql.user表

INSERT INTO user VALUES('localhost','monty',PASSWORD('something'), 'Y','Y',...14個Y...);
INSERT INTO user VALUES('%','monty',PASSWORD('something'), 'Y','Y',...);
FLUSH PRIVILEGES;

需手動對齊user表所有權限列(14個Y/N),極易出錯,**不推薦生產環境使用**。

最佳實踐

  1. 統一用GRANT,版本控制存儲授權腳本
  2. 最小權限原則:業務賬號僅授SELECT/INSERT/UPDATE/DELETE於具體庫表
  3. 定期SELECT User,Host FROM mysql.user審計
  4. root遠程登入禁止(DELETE FROM mysql.user WHERE User='root' AND Host!='localhost'; FLUSH PRIVILEGES;)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved