mysql 資料庫的 grant tables,啟動時載入記憶體。user_name@host_name,同名不同 Host 視為不同用戶。user:帳號與全域權限db:資料庫級權限tables_priv:表級權限columns_priv:欄位級權限procs_priv:存儲過程/函數權限proxies_priv:代理用戶權限host:已廢棄用戶名@主機,用戶名 ≤16 字元。主機支援:主機名、IP、網段 (192.168.0.0/255.255.0.0)、通配符 (%, 192.168.%.%, %.test.com)。
SUPERCREATEDELETE, ALTERINSERT, SELECT, UPDATE-- 授權
GRANT 權限列表 ON [對象類型] db.表|程序 TO 'user'@'host' [IDENTIFIED BY 'pwd'];
-- 回收
REVOKE 權限列表 ON [對象類型] db.表|程序 FROM 'user'@'host';
-- 查看權限
SHOW GRANTS FOR 'user'@'host';
-- 建立/刪除/重命名用戶
CREATE USER 'user'@'host' [IDENTIFIED BY 'pwd'];
DROP USER 'user'@'host';
RENAME USER old_name TO new_name;
-- 查看所有用戶
SELECT user, host, password FROM mysql.user;
-- 授予超級權限
GRANT SUPER ON *.* TO 'mysql'@'localhost';
-- 或
GRANT ALL PRIVILEGES ON *.* TO 'mysql'@'localhost';
-- 回收超級權限
REVOKE SUPER ON *.* FROM 'mysql'@'localhost';
-- 查看特定用戶權限
SHOW GRANTS FOR 'mysql'@'localhost';
啟動參數加入 --skip-grant-tables --skip-networking,兩種方式:
/etc/init.d/mysql 啟動腳本my.cnf [mysqld] 區段加入 skip-grant-tables、skip-networking登入後執行:
UPDATE mysql.user SET PASSWORD=PASSWORD('新密碼') WHERE User='root';
FLUSH PRIVILEGES;
移除參數並重啟服務。
關閉 DNS 反向解析:my.cnf 加入 skip-name-resolve。