【Kettle报错】kettle7.0链接MySQL显示:No appropriate protocol

【Kettle7.0链接本地MySQL数据库报错】

1. 问题描述

报错问题:kettle7.0报错,提示No appropriate protocol (protocol is disabled or cipher suites are inappropriate)
错误原因

Caused by: javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate)
	at sun.security.ssl.HandshakeContext.<init>(HandshakeContext.java:171)
	at sun.security.ssl.ClientHandshakeContext.<init>(ClientHandshakeContext.java:101)
	at sun.security.ssl.TransportContext.kickstart(TransportContext.java:238)
	at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:394)
	at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:373)
	at com.mysql.jdbc.ExportControlled.transformSocketToSSLSocket(ExportControlled.java:149)
	... 66 more

主机名   : 127.0.0.1
端口    	: 3306
数据库名	: test

2. 情况描述

情况描述:本地链接数据库,链接报错,排查数据库grant授权,navicat链接了数据库账号密码均可以,其他电脑都可以,就是本地电脑链接不上,链接报错。经过排查最后确定是java版本为1.8.0_301,对应的301链接MySQL数据库协议不对
1)MySQL和客户端连接使用的tls版本,可能是TLSv1或者是TLSv1.1,需要放开jdk对TLSv1或者是TLSv1.1黑名单的限制。随便去掉一个TLSv1或者是TLSv1.1即可重现链接。
2)查询MySQL5.7版本文档,可以知道,MySQL支持TLSv1, TLSv1.1, TLSv1.2 版本。
![在这里插入图片描述](https://img-blog.csdnimg.cn/41b508e9a691478在这里插入图片描述
3)连接我的DataGrip的时候可以只使用了TLSv1, TLSv1.1,而不会使用 TLSv1.2 进行连接建立。使用命令行登录MySQL,可以查询MySQL实例支持的TLS版本,以及当前连接使用的TLS版本。mysqlcli连接
SHOW VARIABLES LIKE 'tls_version';
SELECT * FROM performance_schema.session_status WHERE VARIABLE_NAME IN ('Ssl_version','Ssl_cipher');
在这里插入图片描述

3. 解决办法

  1. 【降低JDK版本】将本地JDK版本由1.8.0_301降低到1.8.0_201,在Kettle7.0本地链接测试,可以链接数据库。
  2. 【修改JDK文件】没尝试怕JDK修改后不好用

4. 参考文献

  1. No appropriate protocol (protocol is disabled or cipher suites are inappropriate)(Java版)
  2. 记一次No appropriate protocol (protocol is disabled or cipher suites are inappropriate)调用异常及解决办法
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值