我们有一个开发服务器和一个实时服务器,具有不同的数据库连接详细信息(用户名、密码等).

目前,我们将数据库连接详细信息存储在initial.php中,如果存在定义语句,则 Select 其中一个.我们在活动服务器上手动添加该定义语句.

这是一个安全的方法吗?管理数据库连接安全性有哪些更好的/替代方法?

这样做的一个结果是每个开发人员都可以看到数据库连接详细信息,这有点冒险……

推荐答案

我用一个.ini文件,然后通过parse_ini_file(INI_FILENAME_HERE, true)解析.

MySQL连接的示例.ini-file,使用PDO:

[db_general]
driver = "mysql"
user = "USERNAME"
password = "PASSWORD"

; DSN
; see http://www.php.net/manual/en/pdo.drivers.php
[db_data_source_name]
host = "localhost"
port = 3306
dbname = "DATABASE_NAME"

; specify PDO-options, provide keys without PDO::
; see http://www.php.net/manual/en/pdo.drivers.php
[db_pdo_options]
MYSQL_ATTR_INIT_COMMAND = "SET NAMES utf8"

; specify more PDO-attributes, provide keys without PDO::
; see http://php.net/manual/en/pdo.setattribute.php
[db_pdo_attributes]
ATTR_CASE = "PDO::CASE_LOWER"
ATTR_ERRMODE = "PDO::ERRMODE_EXCEPTION"
ATTR_EMULATE_PREPARES = false

因为不能在.ini-file-key中使用::,所以在代码中使用constant('PDO::' . $iniKey)来获得所需的PDO常量.

Database相关问答推荐

为Postgres数据库字段创建复合索引

我如何计算mongo中的多个字段?

Oracle SQL 开发人员中的 DB2 数据库

什么是hibernate annotated类中使用的 catalog?

Java中基于文件的数据库

使用 Laravel 5.2 从存储在 Y-m-d 数据库中的日期计算年龄

如果限制在本地机器上,最好使用 R 和 SQL

通过生成迁移将索引:唯一添加到 ruby​​ on rails 中的列

SOA 和共享数据库

不可重复读与脏读的区别

如何使用 PHP 代码将图像上传到 MySQL 数据库

为 Java servlet 管理数据库连接的最佳方法

JPA:处理 OptimisticLockException 的模式

使用多个数据库模式的 JPA

MySQL相对于其他数据库的缺点

Django:将博客条目查看次数加一,这有效率吗?

如何动态更改 Ruby on Rails 中所有模型的 Active Record 数据库?

如何在 SQL Server 中生成并手动插入唯一标识符?

根据上次日期 Select 记录

NoSQL 数据库是否使用或需要索引?