Hive本地模式安装 schematool -initSchema -dbType mysql初始MySQL数据库报错-Access denied for user ‘root‘@‘

初始化报错的异常信息:

[root@master conf]# schematool -initSchema -dbType mysql
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/export/servers/hive/lib/log4j-slf4j-impl-2.6.2.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/export/servers/hadoop/share/hadoop/common/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]
Metastore connection URL:	 jdbc:mysql://192.168.200.202:3306/hive?createDatabaseIfNotExist=true
Metastore Connection Driver :	 com.mysql.jdbc.Driver
Metastore connection User:	 root
org.apache.hadoop.hive.metastore.HiveMetaException: Failed to get schema version.
Underlying cause: java.sql.SQLException : Access denied for user 'root'@'192.168.200.200' (using password: YES)
SQL Error code: 1045
Use --verbose for detailed stacktrace.
*** schemaTool failed ***

报错的意思是:

无法获取元数据库架构版本

根本原因:java.sql.SQLException异常:拒绝访问用户’root’@‘192.168.200.200’(使用密码:是)

SQL错误代码:1045

解决办法(重点):

【讲在前面】:MySQL安装后要设置开机自启,添加环境变量,如果用root用户登录MySQL默认是没有没有密码的 需要修改root用户的密码(是root用户登录MySQL的密码,不是root用户的开机密码)。

设置开机自启服务控制脚本:
1. 增加my.cnf的权限
chmod 755 /etc/my.cnf
2. 复制启动脚本到资源目录
cp ./support-files/mysql.server /etc/rc.d/init.d/mysqld
3. 增加mysqld服务控制脚本执行权限
chmod +x /etc/rc.d/init.d/mysqld
4. 将mysqld服务加入到系统服务
chkconfig --add mysqld
5. 检查mysqld服务是否已经生效
chkconfig --list mysqld 

如图所示即为已经生效:
Hive本地模式安装 schematool -initSchema -dbType mysql初始MySQL数据库报错-Access denied for user ‘root‘@‘_第1张图片

修改root用户密码:
use mysql
set password = password("密码");

重点:
更改原理是开启MySQL数据库远程访问权限!!!

第三步是正式开始访问权限,第四步非必要不执行,也就是,开启访问权限后再去初始化试一下,如果成功就不用执行第四步了,如果还不可以,执行第四步然后再去初始化。

开启远程访问权限后要记得重启MySQL服务

  1. 登录MySQL 【使用你hive-site.xml中配置的用户登录】

     mysql -u root -p
    
  2. 查看host信息

     use mysql;
     select host from user;
    
  3. 如果host所在的列没有%这一行则执行如下命令(如果有的话直接跳到第四步的删除):

     grant all privileges on *.* to user_name@'%' identified by 'user_password' with grant option;
     然后刷新:
     flush privileges;
    

注意:命令中的user_name和user_password为你登录MySQL的用户名和密码,也就是你hive-site.xml中配置的用户名和密码。

再次查看host信息:

可以看到已经添加了%这一行
Hive本地模式安装 schematool -initSchema -dbType mysql初始MySQL数据库报错-Access denied for user ‘root‘@‘_第2张图片

  1. 把刚才表中除了%这一行的数据全部删除:

     delete from user where host<>'%';
    

    删除后再次查看:
    Hive本地模式安装 schematool -initSchema -dbType mysql初始MySQL数据库报错-Access denied for user ‘root‘@‘_第3张图片

  2. 重启MySQL服务

    退出MySQL命令行后,重启MySQL服务。

     service mysqld restart
    

    在这里插入图片描述

  3. 重新初始化MySQL数据库

     schematool -initSchema -dbType mysql
    

    初始化成功:
    Hive本地模式安装 schematool -initSchema -dbType mysql初始MySQL数据库报错-Access denied for user ‘root‘@‘_第4张图片

你可能感兴趣的:(hive,数据库,hive,大数据,Hive本地模式安装)