使用此代码我可以正常使用zend框架连接到mysql:
resources.db.adapter = "Pdo_Mysql"
resources.db.params.host = "xx.xx.xx.xx"
resources.db.params.username = "test_user"
resources.db.params.password = "test_pass"
resources.db.params.dbname = "test_database"
resources.db.params.port="xxxx"
;parameters here for ssl connection??
在我的Controller
:
public function indexAction() {
$config = new Zend_Config_Ini('/path/to/application.ini', 'development');
$db = Zend_Db::factory($config->resources->db);
$sql = 'SELECT * FROM test_table';
$result = $db->fetchAll($sql);
echo '<pre>';
print_r($result);
}
现在问题是我想使用 ssl 连接到mysql,但我还没有找到任何关于如何做到这一点的文档。
我设法通过配置ssl连接,在数据库管理员的帮助下使用Navicat建立连接到服务器,如下所示:
现在的问题是如何使用php连接?
答案 0 :(得分:3)
你应该可以像这样指定驱动程序选项:
;PDO::MYSQL_ATTR_SSL_KEY
resources.db.params.driver_options.1010 = "/path/to/client-key.pem"
;PDO::MYSQL_ATTR_SSL_CERT
resources.db.params.driver_options.1011 = "/path/to/client-cert.pem"
;PDO::MYSQL_ATTR_SSL_CA
resources.db.params.driver_options.1012 = "/path/to/ca-cert.pem"
答案 1 :(得分:2)
来自http://php.net/manual/en/ref.pdo-mysql.php:
使用相应的PDO_MySQL constants启用SSL支持,这相当于调用» MySQL C API function mysql_ssl_set()。此外,无法使用PDO :: setAttribute启用SSL,因为连接已存在。另请参阅有关» connecting to MySQL with SSL。
的MySQL文档
另请参阅:http://php.net/manual/en/ref.pdo-mysql.php#103501
您的PHP安装还需要openssl才能使其正常工作。
答案 2 :(得分:2)
我通过SSL的Zend Db(适配器:Pdo_Mysql)的工作配置:
Array
(
[host] => XX.XX.XX.XX
[username] => nice-user
[password] => ************
[dbname] => database
[driver_options] => Array
(
[1010] => /path/to/client-key.pem
[1011] => /path/to/client-cert.pem
[1012] => /path/to/ca-cert.pem
[1013] =>
[1014] => DHE-RSA-AES256-SHA
)
)
如果你的应用程序是基于网络的,那么确保Apache用户可以读取上面列出的证书文件(Debian上的'www-data'),我认为它是。
答案 3 :(得分:1)
要与Zend连接,请将application.ini设置为:
;PDO::MYSQL_ATTR_SSL_KEY = 1007
resources.db.params.driver_options.1007 = "/path/to/client-key.pem"
;PDO::MYSQL_ATTR_SSL_CERT = 1008
resources.db.params.driver_options.1008 = "/path/to/client-cert.pem"
;PDO::MYSQL_ATTR_SSL_CA = 1009
resources.db.params.driver_options.1009 = "/path/to/ca-cert.pem"