Ubuntu18.04 hive初始化MySQL报错

错误信息

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’。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容