美文网首页
Ubuntu18.04 hive初始化MySQL报错

Ubuntu18.04 hive初始化MySQL报错

作者: 顺风飘千里 | 来源:发表于2021-08-01 17:05 被阅读0次

错误信息

org.apache.hadoop.hive.metastore.HiveMetaException: Failed to get schema version.
Underlying cause: java.sql.SQLException : Access denied for user 'sfpql'@'localhost'
SQL Error code: 1698
Use --verbose for detailed stacktrace.


错误

原因

一般报Failed to get schema version是连接不上MySQL的原因
排查点:

  1. 看MySQL的驱动是否添加到hive的lib目录下,并且jar包版本要符合MySQL版本
  2. 看hive的hive-site.xml文件是否编写正确
    • connect首字母大写


      connect首字母大写
    • 用户名密码检查


      用户名密码

解决

我的错误是报SQL Error code: 1698

原因是因为在最近的Ubuntu安装(当然也可能是其他安装)中,MySQL默认使用了UNIX auth_socket plugin插件。

简单来说这意味着当db_users使用数据库时,将会通过系统用户认证表进行认证。你可以通过下面的命令看看你的root用户是否设置成了这样:

mysql> USE mysql;
mysql> SELECT User, Host, plugin FROM mysql.user;

+------------------+-----------+-----------------------+
| User             | Host      | plugin                |
+------------------+-----------+-----------------------+
| root             | localhost | auth_socket           |
| mysql.session    | localhost | mysql_native_password |
| mysql.sys        | localhost | mysql_native_password |
| debian-sys-maint | localhost | mysql_native_password |
+------------------+-----------+-----------------------+

就像你在查询语句中看到的那样,root用户在使用auth_socket插件。有两种方法来解决这个问题:
1. 你可以设置你的root用户使用mysql_native_password插件 2. 你可以创建一个与你的系统用户一致的新的数据库用户(推荐)

(笔者注:方法2即满足auth_socket插件的要求)

选择1:

mysql> USE mysql;
mysql> UPDATE user SET plugin='mysql_native_password' WHERE User='root';
mysql> FLUSH PRIVILEGES;
mysql> exit;

$ service mysql restart

选择2( 用你的操作系统用户名代替YOUR_SYSTEM_USER) :

mysql> USE mysql;
mysql> CREATE USER 'YOUR_SYSTEM_USER'@'localhost' IDENTIFIED BY '';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'YOUR_SYSTEM_USER'@'localhost';
# 别忘了设置密码
mysql> alter user 'YOUR_SYSTEM_USER'@localhost identified by 'password';
mysql> FLUSH PRIVILEGES;
mysql> exit;

$ service mysql restart

记住如果你选择使用方法2,你应该通过使用你的操作系统用户名来连接到MySQL(mysql -u YOUR_SYSTEM_USER)。

注意:在一些操作系统中(例如Debian系)‘auth_socket’插件被叫做’unix_socket’,所以相应的SQL命令语句应该为UPDATE user SET plugin=‘unix_socket’ WHERE User=‘YOUR_SYSTEM_USER’。

相关文章

网友评论

      本文标题:Ubuntu18.04 hive初始化MySQL报错

      本文链接:https://www.haomeiwen.com/subject/nicrvltx.html