如何在 SSL 下从 PDO 连接 MySQL

2024-01-28

我已经配置了MySQLubuntu 服务器中的 SSL。

show variables like "%ssl%";
+---------------+----------------------------+
| Variable_name | Value                      |
+---------------+----------------------------+
| have_openssl  | YES                        |
| have_ssl      | YES                        |
| ssl_ca        | /etc/mysql/ca-cert.pem     |
| ssl_capath    |                            |
| ssl_cert      | /etc/mysql/server-cert.pem |
| ssl_cipher    |                            |
| ssl_key       | /etc/mysql/server-key.pem  |
+---------------+----------------------------+

PHP 脚本中当前的 PDO 连接是这样的:

try {
    $this->_conn = $this->dbh = new PDO('mysql:host=' . DB_SERVER . ';dbname='. DB_NAME, DB_USER, DB_PASS);
    $this->dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
    die("Couldn't connect to database. Please try again!");
}

我试图连接添加这个数组。但是,它不起作用。

array(PDO::MYSQL_ATTR_SSL_KEY  => '/etc/mysql/client-key.pem',
      PDO::MYSQL_ATTR_SSL_CERT => '/etc/mysql/client-cert.pem',
      PDO::MYSQL_ATTR_SSL_CA   => '/etc/mysql/ca-cert.pem'
     );

现在的问题是:如何在安全连接(SSL)下连接 MySQL 数据库?我需要做哪些更改才能添加使其安全?

我通过以下方式生成了客户端和服务器证书:

openssl genrsa -out ca-key.pem 2048;
openssl req -new -x509 -nodes -days 1000 -key ca-key.pem -out ca-cert.pem;
openssl req -newkey rsa:2048 -days 1000 -nodes -keyout server-key.pem -out server-req.pem;
openssl x509 -req -in server-req.pem -days 1000 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 -out server-cert.pem;
openssl req -newkey rsa:2048 -days 1000 -nodes -keyout client-key.pem -out client-req.pem;
openssl x509 -req -in client-req.pem -days 1000 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 -out client-cert.pem;

错误信息

SQLSTATE[HY000] [2026] SSL 连接错误:无法获取私钥


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 SSL 下从 PDO 连接 MySQL 的相关文章

  • MySQL 使用 DATE_ADD 设置 DATE 列的默认值?

    我正在尝试使用表达式将 DATE 列添加到具有 DEFAULT DATE 值的表中 ALTER TABLE wp ezts project params ADD est completion DATE NOT NULL DEFAULT DA
  • 使用 gmail 和 Indy 发送电子邮件

    我正在尝试使用 gmail 从 Delphi 发送电子邮件 我有 Indy 10 5 9 0 和 Delphi XE3 我从以下位置获得了示例代码 http www andrecelestino com delphi xe envio de
  • 更改“Mysql 行大小太大”的限制

    我如何更改限制 行大小太大 gt 8126 将某些列更改为 TEXT 或 BLOB 或使用ROW FORMAT DYNAMIC or ROW FORMAT COMPRESSED可能有帮助 在当前行格式中 BLOB768 字节的前缀内联存储
  • 单击时获取元素的 id(php、jquery、ajax、javascript)

    抱歉 这是我的第一个项目 我学到了很多东西 因此 如果有人可以帮助我 我将不胜感激 我的项目中有这个侧边栏 其中包含 rss 链接 我必须使用 ajax 因此每次用户单击任何 rss 链接时 提要都会出现在屏幕上 这是我的侧边栏代码 div
  • 如何在 PHP 中通过 array_map(...) 使用数组的数组? [复制]

    这个问题在这里已经有答案了 PHP 函数array map http php net manual en function array map php期望回调作为第一个参数 或null for 创建数组的数组 http php net ma
  • Node + now.js + 模型-视图-控制-模式

    我正在使用基于 MVC 模式 模板和 PHP 类 的论坛软件 页面如下所示 domain com index php page Test 我想使用 Node 和 now js 在一个页面 domain com index php page
  • 创建日期 - Laravel 中的 Carbon

    我开始阅读有关Carbon并且似乎不知道如何创建一个carbon date 在文档中说你可以 Carbon createFromDate year month day tz Carbon createFromTime hour minute
  • 在php word中将两个徽标对齐在同一行

    我使用 php word 添加了两个徽标 但两个徽标不在同一行 我希望两个徽标位于同一行 如下所示 我的错误在哪里 if file exists logo table gt addRow table gt addCell 20000 arr
  • 判断是否存在多对多记录组合

    这似乎是一个常见的任务 有一个简单的解决方案 但我在 StackOverflow 和 Google 上都空手而归 场景是这样的 我有两个共享多对多关系的表 A 和 B 因此 我有一个带有外键的表 A B 它映射 A 到 B 记录关系 标准的
  • MySql 复合索引

    我们使用 MySql 作为我们的数据库 以下查询在 mysql 表 大约 2500 万条记录 上运行 我在这里粘贴了两个查询 查询运行得太慢 我想知道更好的复合索引是否可以改善这种情况 你知道最好的综合指数是什么吗 并建议我这些查询是否需要
  • Laravel 中 Twitter Bootstrap 导航的自动活动类

    和大多数人一样 我正在使用 Twitter Bootstrap 来构建我目前在 Laravel 中开发的网站 到目前为止 我很喜欢使用 Laravel 作为与 Rails 相当的 PHP 但我想知道是否有更好的方法来制作导航栏 我试图确保我
  • 搜索多个表 (SQL)

    我需要能够有一个 SQL 查询来使用简单的搜索来搜索我的数据库 这是我的表格现在的样子 Table artists id name Table albums id artistID name Table songs id albumID n
  • 错误:SQLSTATE[HY000] [2002] 无法建立连接,因为目标计算机主动拒绝连接

    当我调试代码时突然发生错误 它有一系列关于数据库连接的错误 ERROR SQLSTATE HY000 2002 No connection could be made because the target machine actively
  • PDO 连接字符串:最好的方法是什么? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我想使用 php pdo 制作一个后端应用程序 我发现了很多不同的方法来处理 PDO 连接字符串 我想知道使用 pdo 执行连接字符串的最佳方法
  • PHP Imagick - setTextEncoding() 函数不起作用

    我正在尝试在 Imagick 对象上添加一些文本 但是我使用 setTextEncoding 函数 它仍然不起作用 draw new ImagickDraw draw gt setTextEncoding utf 8 draw gt set
  • PHP runkit_function_rename 不起作用?

    这段代码不起作用 为什么不 我真正想要的是这个 我正在使用一个具有功能的系统 当我在本地主机上时 我希望该函数做一些不同的事情 我想用自己的东西覆盖该函数 也欢迎所有替代方案 您是否安装了 PECL 扩展 http www php net
  • 删除 cookie php

    我正在尝试创建一个带有登录系统的平台 并将用户名和密码存储在cookie中 以使用户即使关闭浏览器然后再次输入也能保持登录状态 我设法保存了cookie 但我不知道如何制作注销按钮 这是代码 function logout body app
  • Jpgraph:如何在php中设置组条形柱形图的标签

    这是我的 jpgraph 演示代码
  • 如何开始 Zend Framework 开发

    Hai 首先谢谢 我下载了 Zend 框架 C wamp zend 我将 php ini 的包含路径更改为 C wamp zend 我在我的 php 信息中看到了这个 我认为包含路径是正确的 我仍然有很多疑问 我从哪里开始在 zend 框架
  • 在 Java Web 应用程序中获取 DataSource 资源

    我的 context xml 文件中有以下资源标记

随机推荐

  • XSD all 和 XSD Sequence 之间的中间方式

    我正在使用 XSD 定义用户元素 对于此示例 用户具有姓名 电子邮件和一个或多个国籍 我试过了
  • 如何在 Java 5 中从文本文件读取时间和日期?

    我正在尝试使用 Java 5 SE 从纯文本文件中读取数据 数据的格式如下 10 48 AM 07 21 2011 我研究过 DateFormat 和 SimpleDateFormat 但我无法找出将此数据读入 Date 对象的最直接的方法
  • Spring Data REST 返回 http 405 请求嵌套资源列表

    我正在使用 Spring Boot 1 5 7 Spring Data REST Spring HATEOAS Hibernate Spring Validation Swagger 我通过 Spring Data REST 公开我的所有存
  • Laravel Model 主键值插入后丢失

  • 在tensorflow js中重新训练图像分类器

    你好 有什么想法可以将重新训练图像分类器转换为与tensorflow js一起使用吗 从https www tensorflow org hub tutorials image retraining https www tensorflow
  • OS X 上的 Perl Unicode 测试在 Debian 上失败

    我有以下测试 use Test More use Lingua EN NameCase nc use utf8 my output Test Builder gt new gt todo output binmode output enco
  • 在 rdlc 文件中隐藏文本框时保留空白

    我创建了一个报告 该报告的左侧有一个图像 该图像根据传入该报告的参数有条件地可见 页面右侧还有另一个文本框 我观察到 当图像的隐藏属性设置为 True 时 右侧的文本框将保留在正确的位置 当图像的 Hidden 属性设置为 IFF 1 1
  • addEventListener 到 AngularJS 中的简单指令示例

    试图得到this http codepen io softwareeveryday pen beBxmp非常基本的指令示例 从一些调查来看 elem 似乎是一个对象HTML标题元素 继承自 Element 不知道为什么elem addEve
  • 如何使用 Oauth 在 django 中更新 Twitter 的状态

    感谢omab 的social auth 项目 我添加了我的网站twitter 登录 效果很好 但我想让经过身份验证的用户在我的网站上分享推文成为可能 我怎样才能做到这个要求呢 任何帮助和想法将不胜感激 我不确定social auth but
  • 如何在 Excel 中将列转置为行

    我有以下 Excel 工作表 A 1 foo 2 bar 3 baz 4 bam 实际上 该列要长得多 使得手动转发不成为一种选择 我怎样才能把这张纸变成 A B C D 1 foo bar baz bam 我尝试过数据透视表功能 但无法获
  • 如何在 Symfony 中延长会话 cookie 的生命周期?

    在服务器端访问会话数据时 modified time被设置 因此将其过期时间延长到未来 然而 这不会发生在PHPSESSID曲奇饼 虽然服务器端的会话数据过期时间得到延长 但 cookie 过期时间却没有延长 如果 cookie 过期 用户
  • 如何在Wordpress中隐藏模板? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 有没有办法在管理中隐藏模板文件 例如 我有一个模板 仅在安装了特定插件后才可用 并且我已经知道如何检查插件是否处于活动状态 但是如何隐藏模板呢 例如
  • 使用 MailKit / MimeKit 从电子邮件中删除附件

    我正在使用 MailKit 库来处理电子邮件 它运行良好 但是 我试图将电子邮件拆分为其组成文件 a 主电子邮件 无附件 b 单个附件文件 以存储在文件系统上 我可以单独保存附件 但似乎无法从电子邮件正文代码中删除它们 IE 它们与主电子邮
  • 使用 Django 通道进行会话身份验证

    尝试使用 Django 通道进行身份验证 使用一个非常简单的 websockets 应用程序 该应用程序回显用户使用前缀发送的任何内容 You said 我的流程 web gunicorn myproject wsgi log file p
  • Log4j 配置和观察无法正常工作

    我在我的应用程序中使用 log4j 进行日志记录 从现在开始 我使用以下代码来配置日志记录 LogManager resetConfiguration InputStream stream Thread currentThread getC
  • Android Studio:尝试呈现 XML 布局时出现 InvalidVirtualFileAccessException

    我正在尝试在我的应用程序中预览 xml 布局 任何 xml 布局 我正在使用 Android Studio 1 5 Preview 2 我一遍又一遍地收到此错误 InvalidVirtualFileAccessException 访问无效的
  • 使用 Excel VBA 运行 SQL 查询

    我对 SQL 和 VBA 相当陌生 我编写了一个 SQL 查询 我希望能够从 Excel 工作簿中的 VBA 子程序调用和运行该查询 然后将查询结果带入工作簿中 我在网上找到了一些潜艇 stackoverflow 和其他地方 声称可以这样做
  • 寻找家谱[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在为我的 Web 应用程序创建具有 HTML5 要求的家谱功能 我已经搜索并找到了一些 JS 示例 但没有找到符合我要求的 我已经尝试
  • 隐藏特定子页面上的 Ionic TabBar (IONIC 3)

    我想在多个特定页面上隐藏我的标签栏 我的主要重点是将其隐藏在我的登录页面 注册页面和评论页面上 我尝试过 tabsHideOnSubPages true 但是当我这样做时我的 UserProfile 页面 这是一个子页面 隐藏选项卡栏 选项
  • 如何在 SSL 下从 PDO 连接 MySQL

    我已经配置了MySQLubuntu 服务器中的 SSL show variables like ssl Variable name Value have openssl YES have ssl YES ssl ca etc mysql c