sqoop(四) sqoop密码的四种提供方式

sqoop(四) sqoop密码的四种提供方式

1.明文模式

明文模式是最为简单的方式。我们可以在执行sqoop命令时使用--password参数,这样我们就可以直接在命令行中输入密码来访问数据库。

sqoop list-databases --connect jdbc:mysql://your_mysql_host  \
--username your_mysql_username --password your_mysql_password
2.交互模式

交互模式是一种常用的提供密码的方式。在执行sqoop命令时加上-P参数,按下回车之后,终端会提示你输入密码:

sqoop list-databases --connect jdbc:mysql://your_mysql_host \
 --username your_mysql_username -P

采用这种方式,不会有泄漏密码的风险。但是这种方式有个弊端,因为它需要人为地输入密码(交互式),所以只能在终端下执行。所以这种方式比较适合在命令行中做一些简单的测试,如果要在某些后台服务中(比如Oozie)执行sqoop脚本的话,我们需要采用其他方式。

3.文件方式
echo -n "your_mysql_password" > /home/xxx/.mysql.password
chmod 400 /home/xxx/.mysql.password
sqoop list-databases --connect jdbc:mysql://your_mysql_host --username your_mysql_username --password-file file:///home/xxx/.mysql.password

首先我们需要建立一个文件来保存我们的密码,比如例子中的.mysql.password文件。这里有个坑就是我们不能用vim来创建该文件,因为vim会自动在文件的最后加上一个换行符,而sqoop并不会忽略末尾的换行符,所以会将含有换行符的密码提交给数据库,导致访问失败。所以我们可以利用echo -n命令来避免末尾换行符的出现。

然后我们将该文件的访问权限设置为400,即只有当前用户具有可读权限。最后在执行sqoop命令时通过--password-file参数来指定密码文件所在的路径。我们也可以指定位于hdfs的密码文件,只要指定路径时将"file"更换成"hdfs"即可。

4.别名方式

Hadoop2.6.0 之后的版本提供了一个API用于将密码存储和应用程序分离。这个API被称为凭证提供的API,并提供了一个新的命令行工具来管理密码及其别名。密码及其别名一起被存储在密码保护的库中。库密码可以通过控制台交互提示输入提供给应用程序或者作为代码中的变量来提供。

一旦在库中存储了密码及其别名,在应用程序中便可以选择使用别名代替实际密码,并在运行时解析别名以使用密码。这样只有别名在配置文件或者命令中是可见的,这样可以防止密码的泄露。Sqoop基于Hadoop提供的这种功能丰富了密码管理功能,只要底层hadoop支持通过使用库来管理密码及其别名,那么通过使用—password-alias 指定密码对应的别名即可。

创建别名:
hadoop credential create dev181ps -provider jceks://hdfs/tmp/pwd/dev181ps

命令详解:
create 指定创建的别名,这里指定的别名为dev181ps
-provider jceks://hdfs 指定在hdfs上存密码的位置
然后就是输入密码,确定输入密码的过程了!

执行完后,程序在hdfs的/tmp/pwd/下创建了一个dev181ps文件,而且dev181ps就是我们的密码别名。我们可以使用dev181ps来代替我们真实的数据库密码。在执行sqoop命令时,我们可以使用--password-alias参数,参数的值就是我们刚才自己指定的密码别名:

sqoop list-databases \
 -Dhadoop.security.credential.provider.path=jceks://hdfs/tmp/pwd/dev181ps \
  --connect jdbc:mysql://master  \
  --username root \
  --password-alias dev181ps

命令详解:
-Dhadoop.security.credential.provider.path :指定密码的位置

--password-alias: 指定别名 dev181ps

打开mysql.pwd.jceks文件,我们只能看到一片乱码,这就说明别名模式很好地隐藏了我们真实的数据库密码。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

weixin_42934205

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值