文档首页
MySQL Connector/ODBC 开发者指南
相关文档 下载本手册
PDF (US Ltr) - 1.7Mb
PDF (A4) - 1.7Mb


MySQL Connector/ODBC 开发者指南  /  Connector/ODBC 注释和提示  /  Connector/ODBC 和应用程序都使用 OpenSSL

8.3 Connector/ODBC 和应用程序都使用 OpenSSL

如果 Connector/ODBC 正在与 MySQL 服务器进行安全连接,并且使用该连接的应用程序自身调用 OpenSSL 库,则该应用程序可能会失败,因为此时将使用 OpenSSL 库的两个副本。

注意

Connector/ODBC 8.0 及更高版本动态链接到 OpenSSL,而较早的 Connector/ODBC 版本静态链接到 OpenSSL。这解决了与在同一个应用程序中使用两个 OpenSSL 副本有关的问题。

注意

TLSv1.0 和 TLSv1.1 连接协议在 Connector/ODBC 8.0.26 中已弃用,并在 8.0.28 版本中删除。

注意

另请参阅 tls-versions 连接选项。

为防止出现此问题,请在您的应用程序中,不要允许在一个线程中初始化 OpenSSL,而同时在另一个线程中打开 Connector/ODBC 连接(这也将初始化 openSSL)。例如,使用互斥锁来确保 SQLDriverConnect()SQLConnect() 调用与 openSSL 初始化之间的同步。除此之外,如果可能,请实施以下操作

  • 使用 Connector/ODBC 的构建版本,该版本(静态或动态)链接到 libmysqlclient 库的版本,该版本又动态链接到应用程序调用的同一个 OpenSSL 库。

  • 在创建 Connector/ODBC 的构建版本时,该版本(静态或动态)链接到 libmysqlclient 库的版本,该版本又静态链接到 OpenSSL 库,请勿在您的构建版本中导出 OpenSSL 符号。这可以防止应用程序符号被错误地解析;但是,这并不能防止在单个应用程序中运行 OpenSSL 代码的两个副本所带来的其他问题。