数据库访问的用户管理

时间:2015-12-11 06:19:06

标签: php mysql database authentication user-management

我对编程非常陌生,并且有一个基于理论的问题,涉及数据库中的用户管理。我无法想到如何问这个问题,如果这是一个重复的问题,请随时链接。

tldr:核心问题是新用户需要连接到数据库以执行CREATE USER ...但是为了建立该连接,他们需要在某些时候已经创建了CREATE-d。

完整问题:

如果我有一个我想允许多个用户访问的数据库,我知道管理员可以创建"服务器端"用户(通过CREATE USER),用户选择的凭据。每个用户可以通过登录页面打开数据库连接,输入他们的凭据,然后作为参数传递给新连接。

但是,如果我想消除管理员设置新用户帐户的需要,该怎么办?那就是我希望最终用户导航到一个注册页面,在那里他们选择凭据,点击注册并可以访问数据库。

我目前的理解是,唯一的方法是创建"伪用户"账户。即,注册只是将新用户凭证插入凭证表。随后所有用户"登录"通过相同的连接,但必须首先清除登录页面,检查其输入凭据是否与凭证表中存储的凭据匹配。 (这仍然需要管理员创建具有适当权限的真实用户,否则每个人都将通过root用户进行连接。)

编辑:我的意思是说这是通过php。

这听起来不错吗?

谢谢社区。

2 个答案:

答案 0 :(得分:0)

您不需要访问您的页面的每个用户,MYSQL用户帐户。 去为groubs设置一些MYSQL用户帐户,例如:

所有用户的PUBLIC_USER,没有以较少的权限登录。

PROTECTED_USER为记录用户提供更多权利。

对于拥有最大权利的用户的PRIVATE_USER,但ROOT帐户的权利较少。

如果需要,您可以制作更多的组合,但不要为您页面的每个访问者创建一个MYSQL用户帐户。

确实没有必要。

让访问者在MYSQL中运行创建用户的脚本是非常糟糕的做法。

对于漏洞用户/访问者帐户管理,为它创建一个表,不是MYSQL核心表。

e.g。 user_account,用户名,密码,....

答案 1 :(得分:0)

您将应用的用户与数据库用户混合在一起。如果有的话,它们很少是相同的。

您的应用需要一个用于mysql的用户帐户,但您的应用需要在数据库中跟踪自己的用户 - 通常在名为app_users的表中。表格可能如下:

 id   username   email   passwd_hash   salt
 --   --------   -----   -----------   ----
 01   fred       f@a.c   sdfasdf3r23   asdwer32

Web应用程序的用户永远不会直接拥有数据库权限,但所有应用程序查询都将通过应用程序的帐户运行。这些查询应该是预处理语句,或者是只执行存储过程的预处理语句。不应允许应用帐户更改架构。应用程序连接到数据库所需的应用程序凭据应加密并存储在Web根目录之外,但是在Web服务器运行的OS用户可以读取的文件夹中。

对于不同级别的权限,您可能拥有多个mysql应用帐户,但这些帐户仍然与存储在数据库中的用户帐户不同。