隶属于文章系列:大数据安全实战 https://www.jianshu.com/p/76627fd8399c
- 创建密钥文件 /var/opt/app/keytab/zkcli.keyTab
- 创建配置文件:/var/opt/app/keytab/gss-jaas.conf
com.sun.security.jgss.initiate {
com.sun.security.auth.module.Krb5LoginModule required
useKeyTab=true
useTicketCache=false
principal="zkcli@TT.COM"
doNotPrompt=true
keyTab="/var/opt/app/keytab/zkcli.keyTab"
debug=true;
};
- 执行命令用上配置文件
sqoop import \
-D java.security.auth.login.config=/var/opt/app/keytab/gss-jaas.conf \
-D sun.security.jgss.debug=true \
-D javax.security.auth.useSubjectCredsOnly=false \
--connect jdbc:mysql://172.20.176.138:3306/sqoop --username dishy --password dishy --table jonlen \
--warehouse-dir /tmp/mytargetdir -m 1
问题
sqoop:找不到用户
跟hive类似:导数据也用mapreduce,所以导数据的用户也是在整个集群上都存在
每次在执行sqoop命令前,执行kinit XXX
或者kinit -kt ***.keytab
来切换用户。
用脚本指定sqoop的运行用户
#!/bin/bash
/usr/bin/expect <<-EOF
set time 36
# login
### change user
spawn kinit ***********
expect "*Password:*"
#send "echo '@@@@@@@@@@@@@' \r"
send "Mzg2NGQ4OTdkM\r"
expect "*]#"
### exec cmd
send "echo `date` \r"
expect "*]$"
send "exit\r"
expect eof
EOF