mysql - 每次使用不同的用户连接到数据库

标签 mysql privileges

我正在尝试实现尽可能最好的安全系统来提高网站的安全性。我知道创建具有不同权限的不同用户很好,但为每个功能创建一个用户会很有用吗?

我解释得更好:我为不同的操作创建了不同的函数,例如dbSelect()dbInsert()dbUpdate()。会提高系统的安全性,使每个函数连接到具有SELECT权限的MySQL用户,在dbSelect()的情况下,INSERT 特权,如果是 dbInsert() 等?

当然,在一个页面中,可能存在所有这三个功能,因此连接到数据库进行 SELECT,然后关闭连接以打开 INSERT,然后再次选择,等等都会影响数据库性能方面?

最佳答案

(这个问题可能会被关闭,因为这是一个意见问题。但是,我有一个意见。)

对于复杂的应用程序来说,使用多个不同的数据库用户是一个好主意。

但是按照您的建议去做是没有意义的:让一个数据库用户执行 SELECT,另一个数据库用户执行 INSERT 等,只要这两个查询在实践中可以组合即可。

什么是有意义的?

拥有三个用户角色:

  1. 将其称为“webapp”,用于代表网络应用程序的用户进行日常操作。它可能应该能够选择/插入/更新,也许还可以从操作表中删除行。

  2. 将其称为“webadmin”,由您的网络应用程序用于添加和删除用户等操作。该用户将在变化较慢的表上具有插入/更新和删除权限,例如用户。它的使用频率比第一个帐户少得多。

  3. 将其称为“dba”或其他名称,永远不会被网络应用程序本身使用。登录人员使用它来更改您的数据库。它拥有所有权限,包括创建、截断和删除表、索引、过程。您从未将“dba”帐户的密码放入网络应用的代码或配置文件中。

您可能还有另外两个帐户:

  • “billing”仅由您的网络应用程序的计费部分使用,并且可以访问包含您保留的任何用户计费信息的表。

  • “reports”的工作方式有点像“dba”。它将能够读取几乎所有表(也许不是计费表),但不能插入/更新/删除。

  • 诀窍是这样的:让大部分网络应用程序使用权限最小的“webapp”帐户运行,并且仅在需要时使用提升权限的帐户。

    关于mysql - 每次使用不同的用户连接到数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41067128/

    相关文章:

    mysql - 依赖2条对Mysql中 "same"列的查询

    php - 不显示 Blob 图像

    java - 在 Java 中使用 MySQL 事件调度程序

    mysql - 有没有办法在使用 SQL 从表中提取列时更改列中的现有数据

    linux - 如何将 162 端口重定向到 1024 以上的自定义端口用于 snmp 陷阱?

    java - 使用 Eclipse 的 Weblogic 连接池

    linux - 如何让 ng 服务在启动后放弃 root 权限?

    mysql - 向 MySQL 中的现有用户授予权限

    qt - 获得我的 Qt 应用程序的 root 权限

    postgresql - 授予用户更改功能的权限