如何在密码文件sqoop中存储密码

时间:2016-05-11 10:52:43

标签: sqoop

我想将密码存储到文件&稍后在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选项执行相同的操作时,它对我来说很好。

2 个答案:

答案 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 中的文件包含无法恢复的加密格式的密码。