我使用的是hadoop-1.2.1,sqoop版本是1.4.4。
我正在尝试运行以下查询。
sqoop import --connect jdbc:mysql://IP:3306/database_name --table clients --target-dir /data/clients --username root --password-file /sqoop.password -m 1
``` `sqoop.password` 是保存在路径中hdfs上的文件 `/sqoop.password` 经许可。
它给了我一个错误
Access denied for user 'root'@'IP' (using password: YES)
有人能提供解决方案吗?提前谢谢。
7条答案
按热度按时间wi3ka0sx1#
当您打开文件并写入密码时,“\n”正在写入文件。最好使用下面的方法来避免问题
echo -n "Your_sqoop_password" > sqoop.password
yyhrrdl82#
根据sqoop文档
您应该将密码保存在用户主目录中具有400权限的文件中,并使用
--password-file argument
,是输入凭据的首选方法。然后,sqoop将从文件中读取密码,并使用安全方法将其传递给mapreduce集群,而不会在作业配置中公开密码。包含密码的文件可以在本地fs或hdfs上。如果我用root用户运行sqoop作业,那么我的密码文件将在
/user/root/
在hdfs中有关更多详细信息,请查看
mctunoxg3#
创建密码时,请使用
echo -n
选项(-n
选项删除所有尾随空格)。假设您有一个密码“mypassword”,并希望将其保存到一个文件中
sqoop.password
,然后执行以下步骤:使用命令创建密码
将文件上载到hdfs,因为该文件需要存在于hdfs中
编写导入命令
这肯定管用!
voase2hg4#
请按照下面的链接为您的所有sqoop密码相关的疑问。
www.ericlin.me
xriantvc5#
不确定您是否仍有此问题。密码文件可以在任何文件夹中。尝试以下语法,它应该可以工作:
50pmv0ei6#
检查密码文件中是否有垃圾字符。我也遇到了同样的问题,最后发现文件的末尾包含了一个\n字符,sqoop认为这也是密码字符串的一部分。尝试创建下面提到的密码文件,然后使用密码文件:echo-n“root\u password”>password.txt将您的密码替换为root\u密码。
piok6c0g7#
验证运行
sqoop
命令是文件的所有者/sqoop.password
(设置了400个权限)。这将确保密码文件可读。确保
sqoop.password
文件末尾没有任何额外的非打印字符(例如,换行符)。检查这一点的一个简单方法是查看文件的大小。如果密码是'sqoop',文件的大小应该是5。如果较大,则删除sqoop.password
文件,在本地重新生成并将其放回hdfs。报告上述信息的命令是:
hadoop fs -ls /sqoop.password