php - PDO 连接到远程 MySQL 数据库

标签 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 并且凭证是正确的。我错过了什么?

最佳答案

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

关于php - PDO 连接到远程 MySQL 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34601136/

相关文章:

ssl - HAproxy SSL 握手失败

android - okhttp3 - 到服务器的 ssl 连接

php - HTTP 2 对 Web 开发人员意味着什么

php - fatal error : Call to undefined function mb_strlen()

php - 通过比较两个数据库表来删除匹配值 Codeigniter/Mysql

mysql - SQL 联合查询错误

PHP str_ireplace 在 Mysql 结果上

php - 带有外部表单的 jquery 数据表服务器端进程

php - 我是 PHP CodeIgniter 的新手,MySql 出现一些错误的语法错误 "Delete Join"

mysql - 从具有双分组依据的查询中获取 0 的计数