警告信息:
WARN: Establishing SSL connection without server's identity verification is not recommended.
According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set.
For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'.
You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.
不建議在沒有服務器身份驗證的情況下建立SSL連接,根據MySQL 5.5.45+、5.6.26+和5.7.6+的要求,
如果沒有設置顯式選項,則必須默認建立SSL連接。為了符合不使用SSL的現有應用程序,
verifyServerCertificate屬性被設置為“false”。您需要通過設置useSSL=false來顯式禁用SSL,或者通過設置useSSL=true來為服務器證書驗證提供信任存儲。
錯誤原因:
需要設置一下useSSL,你可以設置為false來禁用SSL,或者設置為true來使用SSL,報這個警告的原因主要是JDBC的版本與MySQL的版本不兼容,而MySQL在高版本需要指明是否進行SSL連接。
SSL協議提供服務主要: 1)認證用戶服務器,確保數據發送到正確的服務器; . 2)加密數據,防止數據傳輸途中被竊取使用; 3)維護數據完整性,驗證數據在傳輸過程中是否丟失; 當前支持SSL協議兩層: SSL記錄協議(SSL Record Protocol):建立靠傳輸協議(TCP)高層協議提供數據封裝、壓縮、加密等基本功能支持 SSL握手協議(SSL Handshake Protocol):建立SSL記錄協議用於實際數據傳輸始前通訊雙進行身份認證、協商加密 算法、 交換加密密鑰等。
解決方法:
在mysql 連接加上 useSSL=true
jdbc:mysql://localhost:3306/mybatis?characterEncoding=UTF8&autoReconnect=true&useSSL=true
注意:
低版本的MySQL使用useSSL=true
可能會報錯,使用useSSL=false
不會報錯,可以自行找資料解決。
作用:
當配置MySQL端口為SSL,數據通道會加密處理,這樣可以避免敏感信息泄漏和被篡改。
但是,啟用MySQL的SSL之后,因為每個數據包都需要加密和解密,所以會對MySQL的性能產生不小的影響,大家在使用的時候,可以根據實際情況看是否要開啟。
參考:https://blog.csdn.net/shaock2018/article/details/116571542