2016-05-06 9 views
0

ich SQL-Instanz auf dem Remote-Server überRemote-Zugriff auf mySql von Sqoop

mysql -h ServerIP -u root -p dbNamE 

verbinden kann, aber sobald ich versuche, über Sqoop mit dem Befehl zu verbinden:

sqoop list-tables --driver com.mysql.jdbc.Driver --connect jdbc:mysql://IP:port/dbName --username userName --password password 

wirft diese Fehler:

16/05/06 16:46:46 ERROR manager.SqlManager: Error reading database metadata: java.sql.SQLException: Access denied for user 'root'@'IP' (using password: YES) 
java.sql.SQLException: Access denied for user 'root'@'IP' (using password: YES) 
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073) 
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3597) 
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3529) 
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:935) 
at com.mysql.jdbc.MysqlIO.secureAuth411(MysqlIO.java:4101) 
at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1300) 
at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2337) 
at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2370) 
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2154) 
at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:792) 
at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:49) 
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
at java.lang.reflect.Constructor.newInstance(Constructor.java:422) 
at com.mysql.jdbc.Util.handleNewInstance(Util.java:411) 
at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:381) 
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:305) 
at java.sql.DriverManager.getConnection(DriverManager.java:664) 
at java.sql.DriverManager.getConnection(DriverManager.java:247) 
at org.apache.sqoop.manager.SqlManager.makeConnection(SqlManager.java:885) 
at org.apache.sqoop.manager.GenericJdbcManager.getConnection(GenericJdbcManager.java:52) 
at org.apache.sqoop.manager.SqlManager.listTables(SqlManager.java:520) 
at org.apache.sqoop.tool.ListTablesTool.run(ListTablesTool.java:49) 
at org.apache.sqoop.Sqoop.run(Sqoop.java:148) 
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:76) 
at org.apache.sqoop.Sqoop.runSqoop(Sqoop.java:184) 
at org.apache.sqoop.Sqoop.runTool(Sqoop.java:226) 
at org.apache.sqoop.Sqoop.runTool(Sqoop.java:235) 
at org.apache.sqoop.Sqoop.main(Sqoop.java:244) 
Could not retrieve tables list from server 
16/05/06 16:46:46 ERROR tool.ListTablesTool: manager.listTables() returned null 

Kann ich etwas Klarheit darüber bekommen?

Wie behebe ich das?

Antwort

0

Überprüfen Sie, ob Ihr Verbindungsbenutzername korrekt ist. Wenn Sie beispielsweise direkt mit "-u root" eine Verbindung zu mysql herstellen können, sollten Sie bei der Verbindung mit sqoop denselben Wert für den Benutzernamen verwenden.

Ansonsten habe ich eine ähnliche Meldung, wenn ich den Benutzernamen und das Passwort in der Datei hive-site.xml nicht konfiguriert habe: Es versucht dann, ein Standardkennwort zu verwenden (diese Datei befindet sich in Ihrer Hive-Installation) Ordner/Konf).

Wenn dies der Fall ist, dann konfiguriert gerade diese Eigenschaften in dieser Datei:

<property> 
     <name>javax.jdo.option.ConnectionUserName</name> 
     <value>userName</value> 
     <description>user name for connecting to mysql server</description> 
    </property> 

    <property> 
     <name>javax.jdo.option.ConnectionPassword</name> 
     <value>password</value> 
     <description>password for connecting to mysql server</description> 
    </property>