前提:本機以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),極易出錯,**不推薦生產環境使用**。
GRANT,版本控制存儲授權腳本SELECT/INSERT/UPDATE/DELETE於具體庫表SELECT User,Host FROM mysql.user審計DELETE FROM mysql.user WHERE User='root' AND Host!='localhost'; FLUSH PRIVILEGES;)