7

使用此代码,我可以正常使用 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连接?

4

4 回答 4

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"
于 2012-12-20T03:58:10.643 回答
2

http://php.net/manual/en/ref.pdo-mysql.php

使用适当的PDO_MySQL 常量启用 SSL 支持,这相当于调用» MySQL C API 函数 mysql_ssl_set()。此外,不能使用 PDO::setAttribute 启用 SSL,因为连接已经存在。另请参阅有关» 使用 SSL 连接到 MySQL的 MySQL 文档。

另见: http: //php.net/manual/en/ref.pdo-mysql.php#103501

您的 PHP 安装还需要 openssl 才能正常工作。

于 2012-12-19T17:59:28.270 回答
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
        )
)

如果您的应用程序是基于 Web 的,请确保 Apache 用户(Debian 上的“www-data”)可以读取上面列出的证书文件,我假设它是。

于 2014-03-06T16:52:36.353 回答
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"
于 2014-12-24T14:44:08.393 回答