使用sqlplus命令行隐藏纯文本密码

时间:2019-02-19 22:43:14

标签: oracle sqlplus

我希望使用一个sqlplus命令,其密码从视图中隐藏,这样它就不会出现在ps -ef命令中。

我知道Internet博客上提供了很多解决方案,但是大多数解决方案似乎都需要管理员权限,因此我对该服务器的访问权限受到限制。而其他人似乎似乎对我没有用。

我当前使用的命令如下:

sqlplus -s SOME_USERNAME/SOME_PASSWORD@somedns.intra.com:1500/SOMESID @some.sql

传奇:

SOME_USERNAME:模式/用户

SOME_PASSWORD:密码

SOMESID:此数据库的SID。

@ some.sql:包含插入语句的sql文件。

非常感谢任何指针。

更新:忘了提及此sqlplus命令将在外壳程序脚本中使用。

2 个答案:

答案 0 :(得分:5)

  

在这种情况下,如何从shell脚本中输入密码?

您可以使用a heredoc

sqlplus -s /nolog <<!EOF
connect SOME_USERNAME/SOME_PASSWORD@somedns.intra.com:1500/SOMESID
@some.sql
!EOF

connect@some.sql视为SQL * Plus的输入流,就像您在交互式会话中键入它们一样,它们不属于对可执行文件的初始调用-因此连接详细信息不会出现在ps输出中。

如果您愿意,也可以使用变量,因为变量扩展是在将流传递给可执行文件之前在shell中进行的-即使SQL * Plus无法理解说$PASSWD,到heredoc的工作原理,并传递实际的变量值。

答案 1 :(得分:3)

  • 使用sqlplus -s SOME_USERNAME@\"somedns.intra.com:1500/SOMESID\" @some.sql并在命令行中输入密码。

  • 或者使用外部身份验证,根本不使用密码

  • 最后,SOMESID不是SID,而是服务名称。您使用的Easy Connect语法仅适用于服务名称。 SID非常古老。