仅使用一个用户访问 SQL 数据库


Accessing SQL DB with only one user?

我想设计一个连接到数据库的PHP服务器。我在想两种方法:首先,我可以检查用户是否已注册,然后使用如下所示的通用用户名授予他访问数据库的权限:

    <?php
    /*
     * database connection variables
     */
    if(username_is_valid()){
       define('DB_USER', "user"); // general db user
       define('DB_PASSWORD', "userpassword"); // db password 
       define('DB_DATABASE', "db_1"); // database name
       define('DB_SERVER', "localhost"); // db server
    }    
?>

或者我可以给每个用户一个唯一的用户名和密码

什么是更好的做法?

没有必要授予用户访问数据库的权限,您授予 PHP 对 mysql 的访问权限并使用 PHP 访问数据。

因此,您在 mysql 中分配了一个 mysql 用户,并且您使用 PHP 代码使用该用户访问 mysql。然后,一旦PHP脚本使用该mysql用户连接到数据库,您就可以从数据库中检索(插入,更新等(数据,并通过PHP/HTML/CSS等将其提供给用户。

但是我应该为每个访问数据库的用户提供一个特定的用户名,还是让每个人都使用相同的连接参数?

用户不会访问您的 mysql
用户访问您的网站脚本(在本例中为 PHP(,然后 PHP 可以访问 mysql。

user->website->php script->mysql->检索数据->显示给用户

但是,为了回答您的问题,"PHP"(不是用户(使用相同的mysql用户来连接到您网站上的每个用户的mysql。无论您从 mysql 向哪个用户提供数据,PHP 都可以使用相同的 mysql 用户。
您可以使用不同的mysql用户,但很少,如果您确实需要,您将知道为什么并且已经知道所有这些(即一组非常大的脚本/框架等(

典型的设计是让应用程序使用单个数据库帐户访问 SQL Server 数据库。数据库中的表将存储有关应用程序用户的信息,例如用户名,散列密码,权限等。

应用程序可以使用数据库中的存储过程来访问数据。通过保护表并授予execute对存储过程的应用程序帐户的访问权限,可以限制应用程序和任何其他使用应用程序凭据的人可能造成的损害。

通过将用户的标识传递给存储过程,他们可以基于每个用户适当地限制访问,例如,办公室经理可能能够更改其办公室中每个人的数据。