1. 程式人生 > 其它 >Public Key Retrieval is not allowed

Public Key Retrieval is not allowed

根據前面的分析,導致“Public Key Retrieval is not allowed”主要是由於當禁用 SSL/TLS 協議傳輸後,客戶端會使用伺服器的公鑰進行傳輸,預設情況下客戶端不會主動去找伺服器拿公鑰,此時就會出現上述錯誤。

經過查閱官方文件,出現 Public Key Retrieval 的場景可以概括為在禁用 SSL/TLS 協議傳輸切當前使用者在伺服器端沒有登入快取的情況下,客戶端沒有辦法拿到伺服器的公鑰。具體的場景如下:

  1. 新建資料庫使用者,首次登入;
  2. 資料庫的使用者名稱、密碼發生改變後登入;
  3. 伺服器端呼叫 FLUSH PRIVELEGES 指令重新整理伺服器快取。

針對上述錯誤,有如下的解決方案:

  1. 在條件允許的情況下,不要禁用 SSL/TLS 協議,即不要在 CLI 客戶端使用--ssl-mode=disabled,或在 JDBC 連線串中加入 useSSL=false;
  2. 如果必須禁用 SSL/TLS 協議,則可以嘗試使用 CLI 客戶端登入一次 MySQL 資料庫製造登入快取;
  3. 如果必須禁用 SSL/TLS 協議,則可以通過增加如下引數允許客戶端獲得伺服器的公鑰:
  • 在 JDBC 連線串中加入 allowPublicKeyRetrieval=true 引數;
  • 在 CLI 客戶端連線時加入--get-server-public-key 引數;
  • 在 CLI 客戶端連線時加入--server-public-key-path=file_name 引數,指定存放在本地的公鑰檔案。
TRANSLATE with x English
Arabic Hebrew Polish
Bulgarian Hindi Portuguese
Catalan Hmong Daw Romanian
Chinese Simplified Hungarian Russian
Chinese Traditional Indonesian Slovak
Czech Italian Slovenian
Danish Japanese Spanish
Dutch Klingon Swedish
English Korean Thai
Estonian
Latvian Turkish
Finnish Lithuanian Ukrainian
French Malay Urdu
German Maltese Vietnamese
Greek Norwegian Welsh
Haitian Creole Persian  
  TRANSLATE with COPY THE URL BELOW Back EMBED THE SNIPPET BELOW IN YOUR SITE Enable collaborative features and customize widget: Bing Webmaster Portal Back