我想将密码存储到文件&稍后在sqoop命令中使用相同的内容。
根据sqoop文档--password-file
选项允许我们存储密码。所以我只用密码abc文本存储在pwd文件中。 &安培;点击下面的命令。
sqoop import --connect jdbc:mysql://localhost:3306/db --username bhavesh --password-file /pwd --table t1 --target-dir '/erp/test'
假设pwd文件存储在HDFS上
因此我收到以下错误:
java.sql.SQLException: Access denied for user 'bhavesh'@'localhost' (using password: YES)
当我使用-p选项执行相同的操作时,它对我来说很好。
答案 0 :(得分:1)
对于已保存的sqoop作业,我遇到了同样的错误。 我将密码存储在Metastore中,这对我有用。
在sqoop-site.xml文件中更改以下配置属性,该文件通常存储在此处 - /etc/sqoop/conf/sqoop-site.xml
<property>
<name>sqoop.metastore.client.record.password</name>
<value>true</value>
<description>If true, allow saved passwords in the metastore.
</description>
</property>
进行这些更改后,创建sqoop作业并运行以下命令,您将能够看到存储的密码。
sqoop job --show [job_name]
答案 1 :(得分:0)
您可以在 HDFS 上存储凭证。
使用此命令创建凭据:
hadoop credential create mysql.password -provider jceks://hdfs/user/<your_hadoop_username>/mysqlpwd.jceks
在客户端机器上执行时,它会要求提供密码,然后请输入您在 sqoop 命令中使用 -P 选项提供的 MySQL 密码。
sqoop import --connect jdbc:mysql://localhost:3306/db --username bhavesh --password-alias mysql.password --table t1 --target-dir /erp/test
并运行这个修改后的命令,因为我已经替换了
<块引用>--密码文件
与
<块引用>--密码别名
hdfs 中的文件包含无法恢复的加密格式的密码。