10bet网址
连接器和api手册
本手册下载

5.8.3连接器/ODBC和应用程序都使用OpenSSL

如果Connector/ODBC安全地连接到MySQL服务器,并且使用该连接的应用程序调用自身的OpenSSL库,那么应用程序可能会失败,因为这时将使用OpenSSL库的两个副本。

请注意

连接器/ODBC 8.0及更高版本动态链接到OpenSSL,而较早的连接器/ODBC版本静态链接到OpenSSL。这解决了使用来自同一应用程序的两个OpenSSL副本的相关问题。

请注意

TLSv1.0和TLSv1.1连接协议在Connector/ODBC 8.0.26中已弃用,对它们的支持可能会在未来的版本中被删除。

为了防止这个问题,在您的应用程序中,不要允许在一个线程中初始化OpenSSL和在另一个线程中打开Connector/ODBC连接(它也初始化OpenSSL)同时发生。例如,使用互斥锁来确保之间的同步SQLDriverConnect ()SQLConnect ()调用和openSSL初始化。除此之外,如果可能的话,实现以下内容:

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

  • 类的版本链接(静态或动态)的连接器/ODBC的构建时libmysqlclient库中又静态链接到OpenSSL库的,不要在构建中导出OpenSSL符号。这防止了应用程序符号的不正确解析;但是,这并不能防止在一个应用程序中运行两个OpenSSL代码副本所带来的其他问题。