数据库服务器或数据库表中的用户

时间:2010-06-08 10:24:03

标签: database-design

我遇到了一个关于客户端服务器应用程序设计的有趣问题。

我们有这个基于浏览器的管理应用程序,其中有许多用户使用该系统。因此,在该应用程序中,我们有一个用户管理模块。

我一直以为在数据库中有一个用户表来保持所有登录详细信息都足够好。

然而,一位资深开发人员表示,如果没有设计不当,用户管理应该在数据库服务器层完成。他的意思是,如果用户想要使用该应用程序,则应该在用户表中创建用户并在数据库服务器中创建用户帐户。

因此,如果我有50个用户使用我的应用程序,那么我应该有50个数据库服务器用户登录。

我个人认为在这个数据库的数据库服务器中只有一个用户帐户就足够了。只需授予此用户允许的权限,即可运行应用程序所需的所有操作。与应用程序交互的用户应在数据库表中创建和管理其用户帐户,因为它们与应用程序层更相关。我没有看到并同意需要为在用户表中为应用程序创建的每个用户创建数据库服务器用户帐户。

单个数据库服务器用户应该足以处理应用程序发送的所有查询。

真的希望听到一些建议/意见以及我是否遗漏了什么?性能或安全问题?

非常感谢。

4 个答案:

答案 0 :(得分:1)

不,用户有权使用该应用程序;应用程序被授权访问数据库。你不需要两者。

您可能在数据库中拥有不同的访问权限(例如,用户无法删除或删除表;管理员可以执行任何操作)。在这种情况下,通常会有一个用户组角色设计,其中用户被分配到组,并且每个组都有自己的权限。

答案 1 :(得分:1)

你的“高级开发人员”遗憾地错了。我不确定有资格成为“高级”的人会说1 app app == 1 db user。如前所述,该应用程序将无法扩展(在许多方面)。如果数据库类似于Oracle,他是否建议大型Web应用程序的任何用户在许可成本方面也应被视为数据库用户?那么处理用户管理呢?

我不知道您正在使用哪个数据库,但在大多数情况下,负责通过应用程序服务器访问数据库的单个用户就足够了。应用程序用户可以存储在数据库,LDAP等中。

您不希望1 app user = 1 db user的维护噩梦。老人应该为提出这样的事情感到羞耻。

答案 2 :(得分:0)

我没有看到在数据库中为应用程序用户创建用户帐户的任何有效点。

答案 3 :(得分:0)

有一点我可以想到支持要求用户拥有数据库用户帐户。如果您采用单独的自定义用户表的方法,您的应用程序需要连接一个连接字符串,以便连接到数据库以验证用户身份。如果您的应用程序被黑客攻击,那么黑客就拥有数据库凭据来执行他们想要的任何操作。

但是,如果登录的用户具有数据库帐户,则您的应用程序可以只使用该用户的数据库凭据。无需在您的应用程序中存储数据库连接字符串。