文件首頁
MySQL Connector/ODBC 開發人員指南
相關文件 下載本手冊
PDF (美式信紙) - 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 程式碼複本的其他問題。