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 

如图所示即为已经生效:
在这里插入图片描述

修改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信息:

可以看到已经添加了%这一行
在这里插入图片描述

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

     delete from user where host<>'%';
    

    删除后再次查看:
    在这里插入图片描述

  2. 重启MySQL服务

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

     service mysqld restart
    

    在这里插入图片描述

  3. 重新初始化MySQL数据库

     schematool -initSchema -dbType mysql
    

    初始化成功:
    在这里插入图片描述

### 回答1: schematool -initschema -dbtype mysql 是一个命令,用于在 MySQL 数据库初始Hive 元数据存储的模式。执行此命令将创建必要的表和其他对象,以便 Hive 可以在 MySQL 中存储元数据。 ### 回答2: schematool -initschema -dbtype mysql 是一个用于初始MySQL 数据库模式的命令。它是 Apache Hadoop HDFS 的一部分,旨在为用户提供方便的模式初始化和升级支持。 在使用此命令之前,您需要确保已经安装和配置了 MySQL 数据库,并具有与数据库交互的足够权限。接下来,您需要打开终端并键入 schematool -initschema -dbtype mysql 命令。这将启动 HDFS SchemaTool,并初始MySQL 数据库模式。 该命令的主要作用是在 MySQL 数据库中创建一个包含所有必需表的模式。这些表包括 HDFS 表,用于存储文件系统元数据和数据块位置信息。此外,该命令还可以从已存在的 MySQL 数据库中导出模式,以便在其他系统上使用。 请注意,schematool -initschema -dbtype mysql 命令仅用于初始MySQL 数据库模式,而不是实际的数据存储。因此,在使用该命令之后,您仍需要配置 Hadoop HDFS 来使用 MySQL 数据库,以便实现数据持久化。 ### 回答3: schematool -initschema -dbtype mysql是一个命令行工具,用于初始MySQL数据库模式schema)。在这个命令中,-initschema选项告诉schematool初始模式,-dbtype mysql指定了数据库类型为MySQL初始模式是指在创建数据库之后,将所需的表、视图、索引和其他仅在该数据库中使用的对象创建出来。它包含了一系列DDL语句,比如创建表、视图、索引等。 通过使用schematool -initschema -dbtype mysql命令,可以自动初始MySQL数据库模式,而不是手动执行每个DDL语句。这种方式可以避免手动执行DDL语句时出现的错误,同时也可以加快数据库的创建和维护过程。 当我们在开始使用新的MySQL数据库时,可以使用schematool -initschema -dbtype mysql命令来初始模式,以便在未来的使用中更加便捷和高效。此外,该命令还支持其他数据库类型,比如Oracle、PostgreSQL等,可以根据需要进行适当的更改。 总之,schematool -initschema -dbtype mysql是一个非常有用的命令行工具,它可以自动初始MySQL数据库模式,并加快数据库的创建和维护过程。它也可以帮助数据库开发人员更好地管理数据库,提高工作效率和精度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿年、嗯啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值