与MySQL的Hive连接:用户'hive'@'localhost'配置单元的访问被拒绝

use*_*338 3 mysql hadoop hive cloudera metastore

我在CentOS上设置了Hive,并且我在同一台服务器上安装了hadoop,hive和MySQL.我还在mySQL和用户ID上设置了Metastore数据库 - hive可以访问数据库.

我有以下问题 - 错误消息如下.有人可以帮助解决这个问题吗?

显示数据库; FAILED:元数据错误:MetaException(消息:得到异常:org.apache.hadoop.hive.metastore.api.MetaException javax.jdo.JDODataStoreException:拒绝访问用户'hive'@'localhost'(使用密码:YES)NestedThrowables :java.sql.SQLException:访问被拒绝用户'hive'@'localhost'(使用密码:YES))FAILED:执行错误,从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>
Run Code Online (Sandbox Code Playgroud)

我可以使用配置单元和密码登录MySQL,并能够在Metastore数据库中创建表.不确定问题在哪里?有什么建议?

Sac*_*inJ 8

上述错误是因为mysql服务器中'hive'@'localhost'的权限不足.以root身份启动mysql shell,然后在那里执行以下grant选项

$ mysql -u root -p -hlocalhost
Enter password: 

mysql> GRANT ALL PRIVILEGES ON *.* TO  'hive'@'%' IDENTIFIED BY 'password';
mysql> FLUSH PRIVILEGES;
Run Code Online (Sandbox Code Playgroud)