无法从密码包含 $ 美元符号的 linux 调用 sqlplus
cannot call sqlplus from linux where password contains $ dollar sign
我花了几个小时尝试各种建议和组合,但我一生无法从直接 linux 命令行或 bash 脚本调用 sqlplus 以使用包含的密码$
这些我都试过了
sqlplus -S mylogin/'"my$password"'@My_DBName
sqlplus -S mylogin/'my$password'@My_DBName
sqlplus -S mylogin/"my$password"@My_DBName
我已经尝试过与上面相同的方法,但将 \ 放在 $ 之前,以及未显示的各种其他尝试...
已尝试使用 CONNECT 而不是普通密码,以及各种引号和反斜杠(此处仅显示一个示例)
sqlplus -S /nolog << EOF
CONNECT mylogin/my$password@My_DBName;
sqlplus -S /nolog << EOF
CONNECT mylogin/'"my$password"'@My_DBName;
我知道一般的 sqlplus 命令作为单个命令,或者与 CONNECT 一起工作,适用于不包含 $.
的密码
谁能告诉我我做错了什么以及为什么?如果是这样,我非常感谢你!
已编辑 - 我的错 - 啊!
原来有人改了密码。事实上,它甚至可以使用 $ 并指定单引号,如:
sqlplus -S mylogin/'my$password'@My_DBName
在我的 MacOS Catalina 上测试过。适用于单引号。
您确定您的 -S 选项吗?
登录后不显示任何内容....(但您已登录)。你仍然可以做 select * from dual;
system@XEPDB1> create user mylogin identified by my$password;
User created.
Elapsed: 00:00:00.05
system@XEPDB1> grant create session to mylogin;
Grant succeeded.
Elapsed: 00:00:00.03
system@XEPDB1> exit
sqlplus mylogin/'my$password'@localhost/XEPDB1
SQL*Plus: Release 19.0.0.0.0 - Production on Thu Jun 11 13:17:35 2020
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle. All rights reserved.
Connected to:
Oracle Database 18c Express Edition Release 18.0.0.0.0 - Production
Version 18.4.0.0.0
mylogin@XEPDB1>
-- change from my$password to $$$$password
mylogin@XEPDB1> passw
Changing password for MYLOGIN
Old password:
New password:
Retype new password:
Password changed
mylogin@XEPDB1> exit
sqlplus mylogin/'$$$$password'@localhost/XEPDB1
SQL*Plus: Release 19.0.0.0.0 - Production on Thu Jun 11 13:20:09 2020
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle. All rights reserved.
Last Successful login time: Thu Jun 11 2020 13:17:35 +02:00
Connected to:
Oracle Database 18c Express Edition Release 18.0.0.0.0 - Production
Version 18.4.0.0.0
mylogin@XEPDB1>
sqlplus -S mylogin/'$$$$password'@localhost/XEPDB1
select 'No errors - I am logged in!' from dual;
'NOERRORS-IAMLOGGEDIN!'
---------------------------
No errors - I am logged in!
Elapsed: 00:00:00.02
我花了几个小时尝试各种建议和组合,但我一生无法从直接 linux 命令行或 bash 脚本调用 sqlplus 以使用包含的密码$
这些我都试过了
sqlplus -S mylogin/'"my$password"'@My_DBName
sqlplus -S mylogin/'my$password'@My_DBName
sqlplus -S mylogin/"my$password"@My_DBName
我已经尝试过与上面相同的方法,但将 \ 放在 $ 之前,以及未显示的各种其他尝试...
已尝试使用 CONNECT 而不是普通密码,以及各种引号和反斜杠(此处仅显示一个示例)
sqlplus -S /nolog << EOF
CONNECT mylogin/my$password@My_DBName;
sqlplus -S /nolog << EOF
CONNECT mylogin/'"my$password"'@My_DBName;
我知道一般的 sqlplus 命令作为单个命令,或者与 CONNECT 一起工作,适用于不包含 $.
的密码谁能告诉我我做错了什么以及为什么?如果是这样,我非常感谢你!
已编辑 - 我的错 - 啊!
原来有人改了密码。事实上,它甚至可以使用 $ 并指定单引号,如:
sqlplus -S mylogin/'my$password'@My_DBName
在我的 MacOS Catalina 上测试过。适用于单引号。
您确定您的 -S 选项吗?
登录后不显示任何内容....(但您已登录)。你仍然可以做 select * from dual;
system@XEPDB1> create user mylogin identified by my$password;
User created.
Elapsed: 00:00:00.05
system@XEPDB1> grant create session to mylogin;
Grant succeeded.
Elapsed: 00:00:00.03
system@XEPDB1> exit
sqlplus mylogin/'my$password'@localhost/XEPDB1
SQL*Plus: Release 19.0.0.0.0 - Production on Thu Jun 11 13:17:35 2020
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle. All rights reserved.
Connected to:
Oracle Database 18c Express Edition Release 18.0.0.0.0 - Production
Version 18.4.0.0.0
mylogin@XEPDB1>
-- change from my$password to $$$$password
mylogin@XEPDB1> passw
Changing password for MYLOGIN
Old password:
New password:
Retype new password:
Password changed
mylogin@XEPDB1> exit
sqlplus mylogin/'$$$$password'@localhost/XEPDB1
SQL*Plus: Release 19.0.0.0.0 - Production on Thu Jun 11 13:20:09 2020
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle. All rights reserved.
Last Successful login time: Thu Jun 11 2020 13:17:35 +02:00
Connected to:
Oracle Database 18c Express Edition Release 18.0.0.0.0 - Production
Version 18.4.0.0.0
mylogin@XEPDB1>
sqlplus -S mylogin/'$$$$password'@localhost/XEPDB1
select 'No errors - I am logged in!' from dual;
'NOERRORS-IAMLOGGEDIN!'
---------------------------
No errors - I am logged in!
Elapsed: 00:00:00.02