错误1:java.sql.SQLException: null, message from server: “Host ‘*****’ is not allowed to connect to this MySQL server”
安装sqoop成功之后,与mysql进行测试,报错如下:
****为你的主机名
java.sql.SQLException: null, message from server: "Host '*****' is not allowed to connect to this MySQL server"
此错误是因为你虚拟机上的mysql用户权限没有设置,只允许root 与local联合使用,可以进行如下验证,确定是否是此原因
1. 登录mysql
mysql -uroot -p123456(输入你的密码)
登录成功
2. 查看user表
一定要先选择数据库(use mysql;)不然会报错如下:
mysql> use mysql;
Database changed
mysql> select host ,user from user;
查询结果如下:用户root只能使用localhost,所以要更改为任何ip或者主机名都可以,即改为%
3. 修改权限
mysql> update user set host='%' where user ='root';
Query OK, 1 row affected (0.04 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> flush privileges;
修改完之后再次查询结果如下:
再次执行命令不再报错:
查询mysql中所有的数据库
sqoop list-databases --connect jdbc:mysql://lingyun2:3306/ --username root --password 123456
错误2:当使用sqoop从mysql导入hive报错如下:
是因为sqoop lib下面缺少hive的jar
将hive\lib下面的hive-common的jar包复制到sqoop\lib下一份即可
先去hive\lib下面确认hive-common jar的具体版本信息
进行复制:
#根据自己的实际路径和具体版本进行修改
cp /usr/tools/hive/lib/hive-common-2.3.8.jar /usr/tools/sqoop-1.4.7/lib/
复制完重新运行导入命令即可成功
错误3:当运行mysql相关的命令时,虽然有结果,但是依旧报错如下内容
javax.net.ssl.SSLException: closing inbound before receiving peer’s close_notify
是因为链接mysql时SSL证书出现了一些问题
直接在url上加上useSSL=false即可,如下所示:
#添加之前
sqoop list-databases --connect jdbc:mysql://lingyun2:3306/ --username root --password 123456
#添加之后
sqoop list-databases --connect jdbc:mysql://lingyun2:3306/?useSSL=false --username root --password 123456