【问题标题】:How to store password in password file sqoop如何将密码存储在密码文件sqoop中
【发布时间】:2016-09-06 17:26:50
【问题描述】:

我想将密码存储到一个文件中,然后在 sqoop 命令中使用它。

根据 sqoop 文档--password-file 选项允许我们存储密码。所以我将它存储在 pwd 文件中,密码只有 abc 文本。 & 点击以下命令。

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 选项执行相同的操作时,它对我来说很好。

【问题讨论】:

标签: sqoop


【解决方案1】:

对于保存的 sqoop 作业,我遇到了同样的错误。 我将密码存储在元存储中,这对我有用。

在通常存储在这里的文件 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 作业 --show [job_name]

【讨论】:

    【解决方案2】:

    您可以将凭据存储在 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 中的文件包含无法恢复的加密格式密码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-19
      • 2014-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-16
      • 1970-01-01
      相关资源
      最近更新 更多