最佳实践

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