关于ROOT用户的MYSQL安全问题
我的web应用程序使用的数据源使用根用户进行连接。根用户拥有分配的所有权限 我关注的是: 1) 我应该使用这个用户(它是否正常/安全),还是应该创建另一个权限更受限制的用户 2) 如果我确实使用了其他用户,我如何满足以以下内容开始的所有程序:关于ROOT用户的MYSQL安全问题,mysql,Mysql,我的web应用程序使用的数据源使用根用户进行连接。根用户拥有分配的所有权限 我关注的是: 1) 我应该使用这个用户(它是否正常/安全),还是应该创建另一个权限更受限制的用户 2) 如果我确实使用了其他用户,我如何满足以以下内容开始的所有程序: CREATE DEFINER=`root`@`%` PROCEDURE `Blah`() 3) 从根用户删除权限是个坏主意吗。例如,如果我删除了“删除”权限,那么在通过管理或查询浏览器登录时,我仍然能够删除对象。我的猜测是否定的,我不应该破坏特权 如有任
CREATE DEFINER=`root`@`%` PROCEDURE `Blah`()
3) 从根用户删除权限是个坏主意吗。例如,如果我删除了“删除”权限,那么在通过管理或查询浏览器登录时,我仍然能够删除对象。我的猜测是否定的,我不应该破坏特权
如有任何与此相关的文档/链接/信息,将不胜感激。谢谢
否,应用程序不应使用根用户进行连接。您应该创建并配置一个具有应用程序所需权限的用户 我通常至少有三个用户:
- 根可以做任何事;更改root的权限会导致灾难(除非您确切知道自己在做什么)
- 应用程序有自己的用户,该用户有非常严格的权限-通常只需选择、更新、插入和删除它所需的表。在任何情况下,都没有允许模式修改的权限(创建/更改表等)
- 一个特殊的用户,可以访问应用程序的数据库,但不能访问其他内容。此用户用于模式升级等维护任务,但不用于应用程序本身
- 在任何任务中使用root用户都不是一个好主意。您可以像系统用户一样看到它:只有系统在需要时才应该使用它来完成所有事情
创建一个新用户,并仅授予其访问权限和权限,以执行其应执行的操作。这就是所谓的
在这种情况下,程序是特定用户、模块或程序的一部分在正常情况下应该做的事情的一部分。因此,您创建的用户(
DEFINER
)将执行该过程。您应该从根用户中删除该过程,并将其添加到新创建的用户中。如果无法从根用户中删除:那么就这样吧!然而:
如果用户希望访问该过程,(授予他们访问该过程的权限)。在根用户仍然拥有该过程的情况下,仍然可以授予任何其他用户使用该过程的权限
正如我已经提到的,root用户是系统用户。如果您放弃特权,那么任何使用root的程序或用户都无法完成预期的操作(作为系统用户,可以完成所有操作),这将削弱您的系统
考虑一下:如果您从根用户处删除了“添加数据库”权限,您将如何添加新数据库?因此,根用户应该拥有所有权限,但不应仅由系统或系统管理员用于任何用途。它通常被称为“超级用户”,因为它可以做任何事情。只能在设置或安装过程中使用。在所谓的“生产”使用过程中,不应触摸根用户。我甚至认为,定期维护应该让根用户独处。