最佳實踐
限制 root(以及任何其他 SUPER 特權使用者)
GRANT ... TO root@localhost ...
這會阻止其他伺服器的訪問。你應該把 SUPER 分發給很少的人,他們應該知道他們的責任。該應用程式不應該有 SUPER。
將應用程式登入限制為它使用的一個資料庫:
GRANT ... ON dbname.* ...
這樣,攻擊應用程式程式碼的人無法通過 dbname。這可以通過以下任何一種進一步完善:
GRANT SELECT ON dname.* ... -- "read only"
GRANT ... ON dname.tblname ... -- "just one table"
readonly 也可能需要’安全’之類的東西
GRANT SELECT, CREATE TEMPORARY TABLE ON dname.* ... -- "read only"
如你所說,沒有絕對的安全性。我的觀點是,你可以做一些事情來減緩黑客的速度。 (對於誠實的人來說也是如此。)
在極少數情況下,你可能需要應用程式執行僅對 root 使用者可用的操作。這可以通過具有 SECURITY DEFINER
(並且 root 定義它)的儲存過程來完成。這將僅暴露 SP 所做的事情,例如,可能是某個特定表上的一個特定操作。