最近在用hive连接MySQL时遇到了相当多的问题,这里列举几个问题及解决方法,可能不适用读者具体情况,如能帮到你,那便是万幸。
1、连接问题的集合
jdbc:mysql://MySQL的IP地址:3306/hive?
createDatabaseIfNotExist=true&characterEncoding=UTF-8&useSSL=false&allowPublicKeyRetrieval=true
hive:连接的数据库名称,后面有createDatabaseIfNotExist=true,可保证没有数据库的情况下创建名为hive的数据库
characterEncoding=UTF-8 :编码方式为utf-8
useSSL=false :不使用SSL,这个是比较常见的问题,报错时会看到SSL的相关报错信息
allowPublicKeyRetrieval=true :允许公开密钥检索,对于报出的Public Key Retrieval is not allowed可用(仅限于自己电脑的实验,不建议用于公司电脑,感觉危险性不小)
2、MySQL方面
我在连接MySQL时使用root用户似乎不管用,如果有同样问题,可以试着创建一个新用户
create user "username"@"%" identified by "password";
GRANT ALL PRIVILEGES ON *.* TO 'username'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON database.* TO 'username'@'localhost' IDENTIFIED BY 'password';
第一条创建username用户,允许远程访问(%),密码为'‘password’
第二条给予全部权限
第三条给予某个数据库的权限
有关于防火墙,我觉得防火墙并不会阻止连接,我的这些问题的解决都是在开启主机(MySQL)防火墙的情况下实现的
最后别忘了把配置好的hive文件夹给到其他机器上,同时hadoop也要开好