【问题标题】:SQOOP QUERY: trouble connecting to remote server MySQLSQOOP QUERY:连接到远程服务器 MySQL 时出现问题
【发布时间】:2018-12-18 16:10:00
【问题描述】:

我有一个案例,我需要 sqoop 连接到远程 ipaddress mysql。 我可以通过触发以下命令从 putty 连接到 mysql:

mysql -u ro -p -h x.x.x.x -P 4307 orders --enable-cleartext-plugin

但是,我无法从 sqoop 连接到远程 ip : x.x.x.x 我收到 Communications link failure error。我认为此错误的原因可能是:SSL 证书已过期,因为我们正在连接到远程服务器。 以下是生成的错误日志。即使我在 sqoop 中关闭了 ssl 选项,它也会说 Caused by: java.sql.SQLException: ssl is required when using cleartext authentication sqoop可以连接远程服务器mysql吗?

任何帮助将不胜感激

谢谢

命令:sqoop list-tables --connect 'jdbc:mysql://x.x.x.x:4307/orders' --username abc --password abc

警告:/usr/lib/sqoop/../hbase 不存在! HBase 导入将 失败。请将 $HBASE_HOME 设置为 HBase 安装的根目录。 警告:/usr/lib/sqoop/../hcatalog 不存在! HCatalog 作业将 失败。请将 $HCAT_HOME 设置为 HCatalog 安装的根目录。 警告:/usr/lib/sqoop/../accumulo 不存在!累积进口 将失败。请将 $ACCUMULO_HOME 设置为 Accumulo 的根目录 安装。警告:/usr/lib/sqoop/../zookeeper 不存在! Accumulo 导入将失败。请将 $ZOOKEEPER_HOME 设置为 你的 Zookeeper 安装。 18/07/10 12:18:45 信息 sqoop.Sqoop: 运行 Sqoop 版本:1.4.7 18/07/10 12:18:45 WARN tool.BaseSqoopTool:在命令行上设置密码是 不安全。考虑改用 -P。 18/07/10 12:18:45 信息 manager.MySQLManager:准备使用 MySQL 流结果集。 2018 年 7 月 10 日星期二 12:18:46 EDT 警告:建立 SSL 连接 不推荐服务器的身份验证。根据 MySQL 5.5.45+、5.6.26+ 和 5.7.6+ 要求 如果未设置显式选项,则默认情况下必须建立 SSL 连接。为了合规 对于不使用 SSL 的现有应用程序,verifyServerCertificate 属性设置为“假”。您需要明确禁用 SSL 通过设置 useSSL=false 或设置 useSSL=true 并为 服务器证书验证。 18/07/10 12:18:46 错误 manager.CatalogQueryManager:无法列出表 com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: 通讯链路故障

从服务器成功接收到的最后一个数据包是 476 毫秒前。最后一个成功发送到服务器的数据包是 465 毫秒前。 在 sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 在 sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 在 sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 在 java.lang.reflect.Constructor.newInstance(Constructor.java:423) 在 com.mysql.jdbc.Util.handleNewInstance(Util.java:425) 在 com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:990) 在 com.mysql.jdbc.ExportControlled.transformSocketToSSLSocket(ExportControlled.java:203) 在 com.mysql.jdbc.MysqlIO.negotiateSSLConnection(MysqlIO.java:4901) 在 com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO.java:1659) 在 com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1226) 在 com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2188) 在 com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2219) 在 com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2014) 在 com.mysql.jdbc.ConnectionImpl.(ConnectionImpl.java:776) 在 com.mysql.jdbc.JDBC4Connection.(JDBC4Connection.java:47) 在 sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 在 sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 在 sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 在 java.lang.reflect.Constructor.newInstance(Constructor.java:423) 在 com.mysql.jdbc.Util.handleNewInstance(Util.java:425) 在 com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:386) 在 com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:330) 在 java.sql.DriverManager.getConnection(DriverManager.java:664) 在 java.sql.DriverManager.getConnection(DriverManager.java:247) 在 org.apache.sqoop.manager.SqlManager.makeConnection(SqlManager.java:904) 在 org.apache.sqoop.manager.GenericJdbcManager.getConnection(GenericJdbcManager.java:59) 在 org.apache.sqoop.manager.CatalogQueryManager.listTables(CatalogQueryManager.java:102) 在 org.apache.sqoop.tool.ListTablesTool.run(ListTablesTool.java:49) 在 org.apache.sqoop.Sqoop.run(Sqoop.java:147) 在 org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70) 在 org.apache.sqoop.Sqoop.runSqoop(Sqoop.java:183) 在 org.apache.sqoop.Sqoop.runTool(Sqoop.java:234) 在 org.apache.sqoop.Sqoop.runTool(Sqoop.java:243) 在 org.apache.sqoop.Sqoop.main(Sqoop.java:252) 引起:javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateExpiredException:NotAfter:1 月 19 日星期五 2018 年美国东部时间 14:35:17 在 sun.security.ssl.Alerts.getSSLException(Alerts.java:192) 在 sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1959) 在 sun.security.ssl.Handshaker.fatalSE(Handshaker.java:302) 在 sun.security.ssl.Handshaker.fatalSE(Handshaker.java:296) 在 sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1514) 在 sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:216) 在 sun.security.ssl.Handshaker.processLoop(Handshaker.java:1026) 在 sun.security.ssl.Handshaker.process_record(Handshaker.java:961) 在 sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1072) 在 sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1385) 在 sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1413) 在 sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1397) 在 com.mysql.jdbc.ExportControlled.transformSocketToSSLSocket(ExportControlled.java:188) ... 27 更多原因:java.security.cert.CertificateExpiredException:NotAfter:Fri Jan 19 2018 年美国东部时间 14:35:17 在 sun.security.x509.CertificateValidity.valid(CertificateValidity.java:274) 在 sun.security.x509.X509CertImpl.checkValidity(X509CertImpl.java:629) 在 sun.security.x509.X509CertImpl.checkValidity(X509CertImpl.java:602) 在 com.mysql.jdbc.ExportControlled$X509TrustManagerWrapper.checkServerTrusted(ExportControlled.java:286) 在 sun.security.ssl.AbstractTrustManagerWrapper.checkServerTrusted(SSLContextImpl.java:985) 在 sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1496) ... 35 更多 18/07/10 12:18:46 错误 sqoop.Sqoop:运行 Sqoop 时出现异常:java.lang.RuntimeException: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: 通讯链路故障

从服务器成功接收到的最后一个数据包是 476 毫秒前。最后一个成功发送到服务器的数据包是 465 毫秒前。 java.lang.RuntimeException: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: 通讯链路故障

从服务器成功接收到的最后一个数据包是 476 毫秒前。最后一个成功发送到服务器的数据包是 465 毫秒前。 在 org.apache.sqoop.manager.CatalogQueryManager.listTables(CatalogQueryManager.java:118) 在 org.apache.sqoop.tool.ListTablesTool.run(ListTablesTool.java:49) 在 org.apache.sqoop.Sqoop.run(Sqoop.java:147) 在 org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70) 在 org.apache.sqoop.Sqoop.runSqoop(Sqoop.java:183) 在 org.apache.sqoop.Sqoop.runTool(Sqoop.java:234) 在 org.apache.sqoop.Sqoop.runTool(Sqoop.java:243) 在 org.apache.sqoop.Sqoop.main(Sqoop.java:252) 引起:com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: 通讯链路故障

从服务器成功接收到的最后一个数据包是 476 毫秒前。最后一个成功发送到服务器的数据包是 465 毫秒前。 在 sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 在 sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 在 sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 在 java.lang.reflect.Constructor.newInstance(Constructor.java:423) 在 com.mysql.jdbc.Util.handleNewInstance(Util.java:425) 在 com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:990) 在 com.mysql.jdbc.ExportControlled.transformSocketToSSLSocket(ExportControlled.java:203) 在 com.mysql.jdbc.MysqlIO.negotiateSSLConnection(MysqlIO.java:4901) 在 com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO.java:1659) 在 com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1226) 在 com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2188) 在 com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2219) 在 com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2014) 在 com.mysql.jdbc.ConnectionImpl.(ConnectionImpl.java:776) 在 com.mysql.jdbc.JDBC4Connection.(JDBC4Connection.java:47) 在 sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 在 sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 在 sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 在 java.lang.reflect.Constructor.newInstance(Constructor.java:423) 在 com.mysql.jdbc.Util.handleNewInstance(Util.java:425) 在 com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:386) 在 com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:330) 在 java.sql.DriverManager.getConnection(DriverManager.java:664) 在 java.sql.DriverManager.getConnection(DriverManager.java:247) 在 org.apache.sqoop.manager.SqlManager.makeConnection(SqlManager.java:904) 在 org.apache.sqoop.manager.GenericJdbcManager.getConnection(GenericJdbcManager.java:59) 在 org.apache.sqoop.manager.CatalogQueryManager.listTables(CatalogQueryManager.java:102) ... 7 更多原因:javax.net.ssl.SSLHandshakeException:java.security.cert.CertificateExpiredException:NotAfter:Fri Jan 19 2018 年美国东部时间 14:35:17 在 sun.security.ssl.Alerts.getSSLException(Alerts.java:192) 在 sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1959) 在 sun.security.ssl.Handshaker.fatalSE(Handshaker.java:302) 在 sun.security.ssl.Handshaker.fatalSE(Handshaker.java:296) 在 sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1514) 在 sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:216) 在 sun.security.ssl.Handshaker.processLoop(Handshaker.java:1026) 在 sun.security.ssl.Handshaker.process_record(Handshaker.java:961) 在 sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1072) 在 sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1385) 在 sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1413) 在 sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1397) 在 com.mysql.jdbc.ExportControlled.transformSocketToSSLSocket(ExportControlled.java:188) ... 27 更多原因:java.security.cert.CertificateExpiredException:NotAfter:Fri Jan 19 2018 年美国东部标准时间 14:35:17 在 sun.security.x509.CertificateValidity.valid(CertificateValidity.java:274) 在 sun.security.x509.X509CertImpl.checkValidity(X509CertImpl.java:629) 在 sun.security.x509.X509CertImpl.checkValidity(X509CertImpl.java:602) 在 com.mysql.jdbc.ExportControlled$X509TrustManagerWrapper.checkServerTrusted(ExportControlled.java:286) 在 sun.security.ssl.AbstractTrustManagerWrapper.checkServerTrusted(SSLContextImpl.java:985) 在 sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1496) ... 35 更多

【问题讨论】:

    标签: mysql hadoop jdbc sqoop


    【解决方案1】:

    请试试这个 -

    1) 转到我的.cnf

    2) 注释绑定地址(因为它只接受本地连接)

    "绑定地址 = 127.0.0.1"

    "#bind-address = 127.0.0.1"

    3) 重启mysql

    也检查一下-

    jdbc mysql communications link failure to remote database

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-04-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多