热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

论sqoop1连接数据库的血坑

今天实施现场的同事反馈了一个问题,说用sqoop1连接mysql时总是连不上,帮忙研究了半天,发现sqoop1的一个隐藏问题,之前在google上也没找到相关方案,这里整理记录一下sqo


今天实施现场的同事反馈了一个问题, 说用sqoop1连接mysql时总是连不上, 帮忙研究了半天, 发现sqoop1的一个隐藏问题, 之前在google上也没找到相关方案,这里整理记录一下

sqoop1连接mysql测试脚本: 

sqoop list-databases --connect jdbc:mysql://IP:3306/database --username user --password pswd

 在之前项目的测试环境都是OK的, 但是客户现场运行时报错: 

17/08/17 19:54:24 ERROR manager.CatalogQueryManager: Failed to list databases
java.sql.SQLException: Access denied for user 'user'@'IP' (using password: YES)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:963)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3966)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3902)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:875)
at com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO.java:1712)

按着以往的思路, 先检查数据库的用户, 刷新数据库权限, 在客户端控制台运行 mysql -h ip -u user -p 可以登录, 一切似乎很顺利, 用sqoop 测试时, 依旧报以上错误, 一头黑线...

然后自己写了一个测试jdbc的工具jar, 丢在客户端运行,更换了sqoop下面驱动jar, 测试了下, 依旧可以读取mysql的数据, 然而sqoop依然不给面子...

然后开始google, 翻了N页, 基本都是用户权限的问题, 依然没有头绪, 一度怀疑是sqoop1安装的问题 ...

继续尝试, 换了数据库连接, sqoop连了一下, 居然成功了, 有点小激动. 接下来就很简单了, 既然不是sqoop的问题, 又不是mysql的问题, 就是自己的问题了, 同事提供的数据库连接密码中包含一个特殊符号'$', 果断换掉, 再用sqoop连接, 一切OK   


结论: sqoop1的命令行参数应该是对特殊符号做了处理, 通过sqoop操作数据库时尽量不要包括特殊符号, 至于详细的原因, 就只能扒一扒sqoop的源码了


推荐阅读
author-avatar
海螺里的秘密_471
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有