您好我正在编写一个ksh脚本来更改整个环境中的DBA密码。我提示用户提供新密码并将其设置为$ newPwd变量。问题是当我将此变量传递给sql查询时,它会在日志文件中显示密码。
sqlplus sys/sysPwd@db<<EOf>dba_password_change_log.log
Alter user $dba_user identified by $newPwd;
quit;
EOF
$ cat dba_password_change_log.log
改变由T1ger识别的用户SCOTT;
如何屏蔽$ newPwd变量?
答案 0 :(得分:0)
您需要将其加密到日志文件。您需要使用一些代码将其传递给pgp或其他一些加密程序。
答案 1 :(得分:0)
我发现了另一种方式。我只是使用了plsql程序。
declare
emesg varchar2(32000);
begin
dbms_output.put_line('alter user ${dba_user} identified by *******');
execute immediate 'alter user ${dba_user} identified by "${newPwd}"';
exception when others then
emesg := SQLERRM;
raise_application_error(-20001, 'alter user ${dba_user} command failed: '|| emesg);
end;
/
现在,当我打开日志文件时,它只会显示以下错误消息或其他错误消息。
第1行的错误: ORA-20001:alter user命令失败:ORA-28007:密码无法重用 ORA-06512:第8行