-1

我想设计一个连接到数据库的 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
    }    
?>

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

什么是更好的做法?

4

2 回答 2

2

无需授予用户访问数据库的权限,您授予 PHP 访问 mysql 并使用 PHP 访问数据。

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

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

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

用户->网站->php脚本->mysql->检索数据->显示给用户

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

于 2013-09-22T23:53:10.167 回答
1

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

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

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

于 2013-09-23T01:54:05.377 回答