配置单元到mysql的连接:拒绝用户“hive”@“localhost”配置单元的访问

wyyhbhjk  于 2021-06-03  发布在  Hadoop
关注(0)|答案(3)|浏览(398)

我正在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数据库中创建表。不确定问题出在哪里?有什么建议吗?

vddsk6oq

vddsk6oq1#

The error is while granting the privileges in mySQL configuration. You should give as follows:

全力以赴。到“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

izkcnapc

izkcnapc2#

上面的错误是因为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;
sbtkgmzw

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'

相关问题