初始化报错的异常信息:
代码语言: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
初始化成功: