Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Tại sao Java không thể kết nối với MySQL 5.7 sau khi cập nhật JDK mới nhất và nên sửa lỗi này như thế nào? (ssl.SSLHandshakeException:Không có giao thức thích hợp)

Như @skelwa đã nhận xét, bạn sẽ cần thêm enabledTLSProtocols=TLSv1.2 thuộc tính cấu hình trong chuỗi kết nối để giải quyết vấn đề của bạn.

Chuỗi kết nối hoàn chỉnh cho Trình kết nối / J có thể trông như thế này:

jdbc:mysql://<host>:<port>/<dbname>?enabledTLSProtocols=TLSv1.2

Đối với r2dbc bạn sẽ cần sử dụng tlsVersion=TLSv1.2 thay vào đó.

Câu hỏi còn lại là:

Tại sao JDK và MySQL không đồng ý về việc sử dụng TLSv1.2 ?

Mặc dù cả hai bên thực sự hỗ trợ TLSv1.2, nhưng sự cố bạn đang gặp phải do hoạt động mặc định của Connector / J gây ra. Vì lý do tương thích Trình kết nối / J không bật TLSv1.2 trở lên theo mặc định. Do đó, người ta phải bật nó một cách rõ ràng.

Xem lưu ý :

CẢNH BÁO: xin lưu ý rằng giải pháp đề xuất chỉnh sửa jdk.tls.disabledAlgorithms bên trong jre/lib/security gây ra rủi ro bảo mật đối với ứng dụng của bạn và thay đổi bất cứ thứ gì có thể có những tác động nghiêm trọng! Có những lý do khiến các giao thức đó bị vô hiệu hóa và người ta không nên xóa mọi thứ hoặc thậm chí chỉ các phần khỏi danh sách đó.

Lưu ý: nếu bạn muốn có thêm thông tin chi tiết cấp thấp hơn từ JDK để gỡ lỗi sự cố của mình, bạn có thể bật nhật ký gỡ lỗi ssl bằng cách chuyển cấu hình sau vào java comand:

-Djavax.net.debug=ssl,handshake hoặc thậm chí -Djavax.net.debug=all

Trong trường hợp của bạn, bạn sẽ thấy một cái gì đó như:

...(HANDSHAKE_FAILURE): Couldn't kickstart handshaking (
"throwable" : {
  javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate)
    at java.base/sun.security.ssl.HandshakeContext.<init>(HandshakeContext.java:170)
    at java.base/sun.security.ssl.ClientHandshakeContext.<init>(ClientHandshakeContext.java:98)
    ...


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. CodeIgniter- bản ghi hoạt động chèn nếu mới hoặc cập nhật trùng lặp

  2. Địa chỉ ràng buộc cấu hình MYSql được đặt thành 0.0.0.0 nhưng netstat hiển thị khác trên Ubuntu

  3. Sử dụng khóa chính gợi cảm có dấu trong MySQL

  4. MySQL lấy (các) chuỗi giữa hai cặp # / nhiều cặp #

  5. MySQL - Kết hợp giữa các cơ sở dữ liệu trên các máy chủ khác nhau bằng Python?