最佳實踐

限制 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 所做的事情,例如,可能是某個特定表上的一個特定操作。