与配置单元的mysql连接错误

与配置单元的mysql连接错误,mysql,hive,apache-pig,sqoop,hadoop2,Mysql,Hive,Apache Pig,Sqoop,Hadoop2,当我尝试用hive it远程连接mysql(从hadoop-2.5.1集群中的datanode)时,它抛出错误: 原因:java.sql.SQLException:无法打开到给定数据库的测试连接。JDBC url=JDBC:mysql://192.168.4.43:3306/metastore ? createDatabaseIfNotExist=true,username=root。正在终止连接池。原始例外情况:------ java.sql.SQLException:null,来自服务器的消

当我尝试用hive it远程连接mysql(从hadoop-2.5.1集群中的datanode)时,它抛出错误:

原因:java.sql.SQLException:无法打开到给定数据库的测试连接。JDBC url=JDBC:mysql://192.168.4.43:3306/metastore ? createDatabaseIfNotExist=true,username=root。正在终止连接池。原始例外情况:------
java.sql.SQLException:null,来自服务器的消息:“不允许主机'ravi'连接到此MySQL服务器”
位于com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1078)
位于com.mysql.jdbc.SQLError.createSQLException(SQLError.java:989)
位于com.mysql.jdbc.SQLError.createSQLException(SQLError.java:975)
位于com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1110)
位于com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2483)
位于com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2516)
位于com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2301)
位于com.mysql.jdbc.ConnectionImpl(ConnectionImpl.java:834)
位于com.mysql.jdbc.JDBC4Connection(JDBC4Connection.java:47)
位于sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)
位于sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
在sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
位于java.lang.reflect.Constructor.newInstance(Constructor.java:526)org.apache.hadoop.hive.metastore.RetryingMetaStoreClient.getProxy(RetryingMetaStoreClient.java:72)
位于org.apache.hadoop.hive.ql.metadata.hive.createMetaStoreClient(hive.java:2372)
位于org.apache.hadoop.hive.ql.metadata.hive.getMSC(hive.java:2383)
位于org.apache.hadoop.hive.ql.metadata.hive.getDatabase(hive.java:1139)
原因:java.sql.SQLException:null,来自服务器的消息:“不允许主机'ravi'连接到此MySQL服务器”
位于com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1078)
位于com.mysql.jdbc.SQLError.createSQLException(SQLError.java:989)
位于com.mysql.jdbc.SQLError.createSQLException(SQLError.java:975)
位于com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1110)
位于com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2483)sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
在sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
位于java.lang.reflect.Constructor.newInstance(Constructor.java:526)
位于com.mysql.jdbc.Util.HandleneInstance(Util.java:411)
14/11/17 14:06:53信息驱动程序:
失败:执行错误,从org.apache.hadoop.hive.ql.exec.ddlstask返回代码1。java.lang.RuntimeException:无法实例化org.apache.hadoop.hive.metastore.HiveMetaStoreClient
14/11/17 14:06:53错误ql.Driver:失败:执行错误,从org.apache.hadoop.hive.ql.exec.ddlstask返回代码1。java.lang.RuntimeException:无法实例化org.apache.hadoop.hive.metastore.HiveMetaStoreClient
如果有人有解决办法,请告诉我。
提前感谢

您必须从命令行为ravi创建新的mysql用户,如下所示:

CREATE USER 'ravi'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'ravi'@'localhost' WITH GRANT OPTION;
CREATE USER 'ravi'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'ravi'@'%' WITH GRANT OPTION;

根据您的环境更改适当的值,然后使用hive重试您的查询。

我从mysql中得到这种错误:mysql>创建用户“ravi”@“192.168.4.43”,由“root”标识;错误1396(HY000):为“ravi”@“192.168.4.43”创建用户的操作失败
CREATE USER 'ravi'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'ravi'@'localhost' WITH GRANT OPTION;
CREATE USER 'ravi'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'ravi'@'%' WITH GRANT OPTION;