現象:遠程管理工具能查數據,但刪除/修改失效。排查發現工具通過存儲過程/函數操作數據,而用戶缺少 EXECUTE、CREATE ROUTINE、ALTER ROUTINE 權限。
層級 語法示例 適用場景 全局 GRANT ALL ON *.* TO 'admin'@'%'DBA、監控賬號 庫級 GRANT ALL ON db1.* TO 'dev'@'10.0.%'開發/測試賬號 表級 GRANT SELECT, INSERT ON db1.t1 TO 'app'@'%'應用賬號最小權限 列級 GRANT SELECT (id, name) ON db1.t1 TO 'report'@'%'敏感字段隔離 程序級 GRANT EXECUTE ON PROCEDURE db1.proc1 TO 'user'@'%'存儲過程調用 常用權限分類
報錯:ERROR 1418 (HY000): This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled
原因:Binlog 啟用時,創建函數必須聲明確定性特性,默認參數 log_bin_trust_function_creators=OFF 阻攔導入。
[mysqld] log_bin_trust_function_creators = 1
注意:永久開啟降低安全性(允許非確定性函數寫 Binlog 導致主從不一致),建議僅導入期間臨時開啟。
-- 創建 CREATE USER 'user'@'%' IDENTIFIED BY 'pass'; -- 修改密碼 ALTER USER 'user'@'%' IDENTIFIED BY 'newpass'; -- 或 5.7.6+ SET PASSWORD FOR 'user'@'%' = 'newpass'; -- 重命名 RENAME USER 'old'@'%' TO 'new'@'%'; -- 刪除 DROP USER 'user'@'%'; -- 查看所有用戶 SELECT User, Host FROM mysql.user;