PDO连接到远程MySQL数据库

时间:2016-01-04 22:36:49

标签: php mysql ssl pdo

我尝试使用PHP连接到远程MySQL数据库。它应该是一个简单的任务,但因为我是PHP的新手,它会变坏。我得到了一个key-cert.pem,一个client-cert.pem,主机名和凭据。我复制了网络上的一个例子,这就是我所做的:

pdoDb = new PDO(
  'mysql:host=customer_host_name;dbname=customer_db_name', 
  'my_username', 
  'my_password', 
  array(
    PDO::MYSQL_ATTR_SSL_KEY=>'C:/Apache24/htdocs/PETALO/lib/client-key.pem',
    PDO::MYSQL_ATTR_SSL_CERT=>'C:/Apache24/htdocs/PETALO/lib/client-cert.pem'
  ));

当我执行此代码时,我收到了此错误:

Warning: PDO::__construct(): this stream does not support SSL/crypto in C:\Apache24\htdocs\custo\lib\database.php on line 16

Warning: PDO::__construct(): Cannot connect to MySQL by using SSL in C:\Apache24\htdocs\custo\lib\database.php on line 16

Warning: PDO::__construct(): [2002] (trying to connect via tcp://customer_host_name:3306) in C:\Apache24\htdocs\custo\lib\database.php on line 16
error: SQLSTATE[HY000] [2002]

客户没有给我ca-cert.pem,凭据也是正确的。我错过了什么?

1 个答案:

答案 0 :(得分:0)

警告与任何证书文件无关。在php.ini配置文件中没有启用OpenSSL,或者你的php版本根本没有使用SSL支持编译,或者你使用的mysql驱动程序/ php有一个bug,比如php bug #55870。只有在PDO尝试通过SSL启动连接后,证书和mysql设置才会起作用。