11

您将数据库连接的连接设置(如主机、数据库名称、用户、密码)放在哪里?它是放在数据库类或文件中,还是放在配置文件之外,还是放在其他地方?

4

4 回答 4

5

理想情况下,您应该将它放在一个配置文件中,该文件可以像 PHP 数组一样简单。

例如:db_config.php

$db_config = array(
  'host' => 'localhost',
  'user' => 'username',
  'password' => 'qwerty'
);

然后,您应该将此文件放在文档根目录之外,以获得最大的安全性。这样,如果您的虚拟主机失败并开始将 PHP 文件作为文本文件提供(发生),则没有人可以获取您的数据库凭据。

于 2012-11-11T06:27:31.543 回答
3

它可以通过多种方式完成,但常见的是将其放在设置文件中,并将该文件保存在 webroot 之外,这样有关数据库密码的信息就不会意外泄漏到网络中。

于 2012-11-11T06:27:06.683 回答
2

对于 PostgreSQL,我真的很喜欢使用pg_service.conf. 它允许我将所有连接特定设置(主机名、数据库名称、用户名、密码等)放入~/.pg_service.conf或放入/etc/postgresql-common/pg_service.conf并给它们通用名称(服务名称)。

现在,任何想要连接到数据库的程序(Perl、PHP 等)都可以简单地指定"service=name"为它们的连接字符串——漂亮、干净、安全且易于维护。

据我所知,MySQL 对~/my.cnfor/etc/my.cnf文件有类似的机制——你可能想研究一下。

于 2012-11-11T07:02:07.300 回答
1

有很多方法可以做到这一点,但我通过定义 CONSTANTS 来做到这一点:

Create a config/db.php

<?php
define('DB_INFO','mysql:host=localhost;dbname=test');
define('DB_USER','root');
define('DB_PASS','');
于 2012-11-11T06:47:41.173 回答