我的Web应用程序使用的数据源使用ROOT用户连接。 ROOT用户已分配所有权限。
我担心的是:
1)我应该使用这个用户(并且是好的/安全的)还是应该创建另一个具有更多限制权限的用户
2)如果我确实使用了其他用户,我该如何满足以下开头的所有触发器:
CREATE DEFINER=`root`@`%` PROCEDURE `Blah`()
3)从ROOT用户删除权限是一个坏主意。例如,如果我删除“DROP”权限,在通过管理员或查询浏览器登录时,我仍然可以使用DROP对象。我的猜测是否定的,我不应该破坏特权。
任何关于此的文档/链接/信息将不胜感激。感谢
答案 0 :(得分:3)
您绝对应该使用受限制的用户来尽可能多地访问数据库。
有一些权限允许您的用户访问过程。我对它并不熟悉,但这里是官方文档:http://dev.mysql.com/doc/refman/5.0/en/create-procedure.html
不要乱用root的权限:)
答案 1 :(得分:0)
不,您的应用程序应不使用root用户进行连接。您应该创建和配置具有应用程序所需权限的用户,而不是更多。
答案 2 :(得分:0)
我通常至少与三位用户合作:
答案 3 :(得分:0)
将root用户用于任何任务是个坏主意。您可以像系统用户一样看到它:只有系统应该在需要时使用它来执行所有内容。
创建一个新用户并仅为其提供访问和权限,以执行应该所做的事情。这称为principle of least privilege。
在这种情况下,程序是某个用户,模块或程序的一部分在正常情况下应该执行的操作的一部分。因此,您创建owns(DEFINER
)该过程的用户。您应该从root用户删除该过程并将其添加到新创建的用户。如果无法从root用户中删除:那就这样吧!但是:
如果用户想要访问该过程,give(GRANT
)可以访问该过程。如果root用户仍然拥有该过程,则仍然可以授予任何其他用户使用该过程。
正如我已经提到的,root用户是系统用户。如果你删除了特权,那么使用root的任何程序或用户都无法做到预期的事情(系统用户能够做所有事情),这会使你的系统瘫痪。
想一想:如果您从root用户那里删除了“ADD DATABASE”权限,您将如何添加新数据库?