MySQL < 3.22.11 (無 GRANT/REVOKE 指令)
GRANT 內部實際執行 INSERT/UPDATE 授權表。理解對應關係即可手工操作。
GRANT 自動呼叫 PASSWORD() 加密INSERT 需手動指定 PASSWORD('plaintext')mysqladmin flush-privileges
# 或
mysqladmin reload
否則 Server 不知變更,權限不生效。
INSERT INTO user VALUES
("localhost", "anyname", PASSWORD("passwd"),
"Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y");
注意:欄位數需符合當前版本 user 表結構 (用 SHOW COLUMNS FROM user 確認)。
INSERT INTO user (Host, User, Password, Reload_priv)
VALUES ("localhost", "flush", PASSWORD("flushpass"), "Y");
其他權限欄位自動填預設 N。
-- 1. user 表建立連線記錄 (無全域權限)
INSERT INTO user (Host, User, Password)
VALUES ("localhost", "boris", PASSWORD("ruby"));
-- 2. db 表授予資料庫權限
INSERT INTO db VALUES
("localhost", "sample_db", "boris",
"Y","Y","Y","Y","Y","Y","N","Y","Y","Y");
-- "N" 為 Grant_priv,WITH GRANT OPTION 時設 Y
操作 tables_priv、columns_priv,Table_priv/Column_priv 為 SET 型別:
-- 表級 SELECT + INSERT
UPDATE tables_priv SET Table_priv = 'Select,Insert' WHERE ...
UPDATE 對應表DELETE 該使用者記錄mysqlaccess:權限分析工具mysql_setpermission:互動式權限設定腳本 (Perl)新安裝 MySQL,執行:GRANT ALL ON samp_db.* TO fred@*.snake.net — 請分析產生的授權記錄分佈。