linux上的sqoop连接本机mysql数据库异常
1.版本:mysql8.0
2.报错:
在sqoop目录下运行下列命令报错
bin/sqoop list-databases --connect jdbc:mysql://localhost:3306/ --username root --password ***
3.原因:linux中的localhost和127.0.0.1始终指向的是虚拟机的ip地址,因此通过访问的是虚拟机自身的数据库,想要连接本机的数据库需要开启本机数据库的远程连接,使用本机的ip地址远程连接数据库,并且替换旧版本的jar包使得sqoop能够正常运行。
4.解决:
(1)开启本机数据库的远程连接
- 修改权限
打开本机数据库,使用mysql数据库
update user set host = ’%’ where user = ’root’;
- 修改my.ini配置文件,跳过ssl验证
D:\ProgramData\MySQL\MySQL Server 8.0
添加skip_ssl
- 重启MySQL
win+R ,输入services.msc,重启服务
- 在虚拟机上验证是否可以连接本机数据库
mysql -h192.168.5.116 -P3306 -uroot -p123456
(2)替换旧版本的jar包
- 官网下载jar包
放到sqoop-1.4.6/lib
中
(3)成功运行sqoop-1.4.6]$ bin/sqoop list-databases --connect jdbc:mysql://本机ip:3306/ --username root --password 123