MySQL Connector/ODBC 发行说明
如果 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 代码的两个副本所带来的其他问题。