我正在centos上安装hive,并且在同一台服务器上安装了hadoop、hive和mysql。我还在mysql上设置了metastore db,用户id-hive可以访问数据库。
我有以下问题-错误信息如下。有人能帮忙解决这个问题吗?
显示数据库;失败:元数据出错:metaexception(message:got exception:org.apache.hadoop.hive.metastore.api.metaexception javax.jdo.jdodatastoreexception:拒绝用户“hive”@“localhost”(使用密码:yes)的访问nestedthrowables:java.sql.sqlexception:拒绝用户“hive”@“localhost”(使用密码:yes)的访问失败:执行错误,从org.apache.hadoop.hive.ql.exec.ddltask返回代码1
hive-site.xml如下所示。
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://127.0.0.1/metastore?createDatabaseIfNotExist=true</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
<description>Driver class name for a JDBC metastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>hive</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>password</value>
</property>
<property>
<name>hive.hwi.war.file</name>
<value>/usr/lib/hive/lib/hive-hwi-0.10.0-cdh4.2.0.jar</value>
<description>This is the WAR file with the jsp content for Hive Web Interface </description>
</property>
<property>
<name>datanucleus.fixedDatastore</name>
<value>true</value>
</property>
<property>
<name>datanucleus.autoCreateTables</name>
<value>true</value>
</property>
<property>
<name>hive.metastore.uris</name>
<value>thrift://127.0.0.1:9083</value>
<description>IP address </description>
</property>
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive2/warehouse</value>
<description> warehouse </description>
</property>
我能够使用配置单元和密码登录到mysql,并且能够在metastore数据库中创建表。不确定问题出在哪里?有什么建议吗?
3条答案
按热度按时间vddsk6oq1#
全力以赴。到“hive”@127.0.0.1,由“yourpassword”标识
因为您在hive-site.xml中将主机名指定为127.0.0.1,如下所示:javax.jdo.option.connectionurl:jdbc:mysql://127.0.0.1/metastore?createdatabaseifnotexist=true
izkcnapc2#
上面的错误是因为mysql服务器中的“hive”@“localhost”没有足够的权限。以root身份启动mysql shell,然后在那里执行以下grant选项
sbtkgmzw3#
刚刚遇到这个问题,把我的故事分享给任何可能遇到同样情况的人。
如果您遵循大多数教程,首先,您将设置
javax.jdo.option.ConnectionURL
的主机为localhost
或者127.0.0.1
.而且你也保证了mysql的特权
grant all on *.* to 'user'@localhost indentified by 'password'
;随着时间的推移,你可能需要改变
javax.jdo.option.ConnectionURL
到远程mysql服务器ip。请确保用户可能没有访问它的权限,除非您保证该特定主机的权限,即grant all on *.* to 'user'@remote_ip_address indentified by 'password'