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

2021-04-29 17:48:36 浏览数 (1)

初始化报错的异常信息:

代码语言:javascript复制
[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用户的开机密码)。

代码语言:javascript复制
设置开机自启服务控制脚本:
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 

如图所示即为已经生效:

代码语言:javascript复制
修改root用户密码:
use mysql
set password = password("密码");

重点: 更改原理是开启MySQL数据库远程访问权限!!! 第三步是正式开始访问权限,第四步非必要不执行,也就是,开启访问权限后再去初始化试一下,如果成功就不用执行第四步了,如果还不可以,执行第四步然后再去初始化。 开启远程访问权限后要记得重启MySQL服务 登录MySQL 【使用你hive-site.xml中配置的用户登录】

代码语言:javascript复制
 mysql -u root -p

查看host信息

代码语言:javascript复制
 use mysql;
 select host from user;

如果host所在的列没有%这一行则执行如下命令(如果有的话直接跳到第四步的删除):

代码语言:javascript复制
 grant all privileges on *.* to user_name@'%' identified by 'user_password' with grant option;
代码语言:javascript复制
 然后刷新:
 flush privileges;

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

代码语言:javascript复制
再次查看host信息:

可以看到已经添加了%这一行

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

代码语言:javascript复制
 delete from user where host<>'%';

删除后再次查看:

重启MySQL服务

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

代码语言:javascript复制
 service mysqld restart

重新初始化MySQL数据库

代码语言:javascript复制
 schematool -initSchema -dbType mysql

初始化成功:

0 人点赞