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