Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
关于ROOT用户的MYSQL安全问题_Mysql - Fatal编程技术网

关于ROOT用户的MYSQL安全问题

关于ROOT用户的MYSQL安全问题,mysql,Mysql,我的web应用程序使用的数据源使用根用户进行连接。根用户拥有分配的所有权限 我关注的是: 1) 我应该使用这个用户(它是否正常/安全),还是应该创建另一个权限更受限制的用户 2) 如果我确实使用了其他用户,我如何满足以以下内容开始的所有程序: CREATE DEFINER=`root`@`%` PROCEDURE `Blah`() 3) 从根用户删除权限是个坏主意吗。例如,如果我删除了“删除”权限,那么在通过管理或查询浏览器登录时,我仍然能够删除对象。我的猜测是否定的,我不应该破坏特权 如有任

我的web应用程序使用的数据源使用根用户进行连接。根用户拥有分配的所有权限

我关注的是:

1) 我应该使用这个用户(它是否正常/安全),还是应该创建另一个权限更受限制的用户

2) 如果我确实使用了其他用户,我如何满足以以下内容开始的所有程序:

CREATE DEFINER=`root`@`%` PROCEDURE `Blah`()
3) 从根用户删除权限是个坏主意吗。例如,如果我删除了“删除”权限,那么在通过管理或查询浏览器登录时,我仍然能够删除对象。我的猜测是否定的,我不应该破坏特权

如有任何与此相关的文档/链接/信息,将不胜感激。谢谢

  • 您绝对应该使用受限用户来尽可能多地访问数据库

  • 存在允许用户访问过程的权限。我对它不太熟悉,但以下是官方文件:

  • 不要破坏root的权限:)


  • 否,应用程序不应使用根用户进行连接。您应该创建并配置一个具有应用程序所需权限的用户

    我通常至少有三个用户:

    • 根可以做任何事;更改root的权限会导致灾难(除非您确切知道自己在做什么)
    • 应用程序有自己的用户,该用户有非常严格的权限-通常只需选择、更新、插入和删除它所需的表。在任何情况下,都没有允许模式修改的权限(创建/更改表等)
    • 一个特殊的用户,可以访问应用程序的数据库,但不能访问其他内容。此用户用于模式升级等维护任务,但不用于应用程序本身

      • 在任何任务中使用root用户都不是一个好主意。您可以像系统用户一样看到它:只有系统在需要时才应该使用它来完成所有事情

        创建一个新用户,并仅授予其访问权限和权限,以执行其应执行的操作。这就是所谓的

        在这种情况下,程序是特定用户、模块或程序的一部分在正常情况下应该做的事情的一部分。因此,您创建的用户(
        DEFINER
        )将执行该过程。您应该从根用户中删除该过程,并将其添加到新创建的用户中。如果无法从根用户中删除:那么就这样吧!然而:

        如果用户希望访问该过程,(
        授予他们访问该过程的权限)。在根用户仍然拥有该过程的情况下,仍然可以授予任何其他用户使用该过程的权限

        正如我已经提到的,root用户是系统用户。如果您放弃特权,那么任何使用root的程序或用户都无法完成预期的操作(作为系统用户,可以完成所有操作),这将削弱您的系统


        考虑一下:如果您从根用户处删除了“添加数据库”权限,您将如何添加新数据库?

        因此,根用户应该拥有所有权限,但不应仅由系统或系统管理员用于任何用途。它通常被称为“超级用户”,因为它可以做任何事情。只能在设置或安装过程中使用。在所谓的“生产”使用过程中,不应触摸根用户。我甚至认为,定期维护应该让根用户独处。