sqlplus: 密码包含斜杠“/”不被接受
sqlplus: password contains slash "/" is not accepted
也许这对 DB 人员来说是微不足道的,但不幸的是对我来说不是。
我为此花了数小时,但我找到的解决方案没有帮助。我的数据库密码包含一个 /
字符,我认为这会混淆 sqlplus
,这就是我无法登录的原因。假设我的密码是 pass/word
.
这是我目前尝试过的:
$ sqlplus MYUSER/pass/word@ABCDEF
$ sqlplus MYUSER/pass\/word@ABCDEF
$ sqlplus MYUSER/'pass/word'@ABCDEF
$ sqlplus MYUSER/'pass\/word'@ABCDEF
$ sqlplus MYUSER/"pass/word"@ABCDEF
$ sqlplus MYUSER/"pass\/word"@ABCDEF
$ sqlplus MYUSER/\""pass/word\""@ABCDEF
None 以上方法有效。
然后我这样试了:
$ sqlplus MYUSER@ABCDEF
SQL*Plus: Release 12.2.0.1.0 Production on Fri Nov 19 15:10:13 2021
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Enter password:
SP2-0306: Invalid option.
Usage: CONN[ECT] [{logon|/|proxy} [AS {SYSDBA|SYSOPER|SYSASM|SYSBACKUP|SYSDG|SYSKM|SYSRAC}] [edition=value]]
where <logon> ::= <username>[/<password>][@<connect_identifier>]
<proxy> ::= <proxyuser>[<username>][/<password>][@<connect_identifier>]
Enter user-name: ^C
这样:
$sqlplus /nolog
connect MYUSER@ABCDEF
SQL*Plus: Release 12.2.0.1.0 Production on Fri Nov 19 15:10:13 2021
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Enter password:
SP2-0306: Invalid option.
Usage: CONN[ECT] [{logon|/|proxy} [AS {SYSDBA|SYSOPER|SYSASM|SYSBACKUP|SYSDG|SYSKM|SYSRAC}] [edition=value]]
where <logon> ::= <username>[/<password>][@<connect_identifier>]
<proxy> ::= <proxyuser>[<username>][/<password>][@<connect_identifier>]
Enter user-name: ^C
无结果。
Google 没有帮助。
我需要使用什么技巧?
重要的是您输入的第一个和最后一个字符必须是 "
。然后解释器(无论是 sqlplus 还是 RDBMS 本身)将剥离它们,并逐字记录剩余的内容。
您的前四次尝试没有成功,但最后三次成功了。
$ sqlplus MYUSER/"pass/word"@ABCDEF
除了 shell1 吞噬了 "
个字符,所以正斜杠 不是 逐字记录。
$ sqlplus MYUSER/"pass\/word"@ABCDEF
这个也很接近,但反斜杠没有帮助,引号仍然被吞噬。
$ sqlplus MYUSER/\""pass/word\""@ABCDEF
实际上,这个可以工作,但我怀疑这不是您所尝试的(即,这是一个打字错误,因为 SO 在您引用时以意想不到的方式处理反斜杠)。在此示例中,sqlplus
main
入口点“接收”了正确匹配的引号字符。
以下所有内容都适合您。
- 让
sqlplus
提示您输入密码并输入 "pass/word"
而不是 pass/word
。
sqlplus myuser/\"pass/word\"
只要你设置TWO_TASK=ABCDEF
.
sqlplus myuser/\"pass/word\"@ABCDEF
# 最简单的 imo
sqlplus myuser/\""pass/word\""@ABCDEF
sqlplus myuser/\""pass/word"\"@ABCDEF
脚注:
1:如果您使用的是真实操作系统而不是 Microsoft 操作系统。
也许这对 DB 人员来说是微不足道的,但不幸的是对我来说不是。
我为此花了数小时,但我找到的解决方案没有帮助。我的数据库密码包含一个 /
字符,我认为这会混淆 sqlplus
,这就是我无法登录的原因。假设我的密码是 pass/word
.
这是我目前尝试过的:
$ sqlplus MYUSER/pass/word@ABCDEF
$ sqlplus MYUSER/pass\/word@ABCDEF
$ sqlplus MYUSER/'pass/word'@ABCDEF
$ sqlplus MYUSER/'pass\/word'@ABCDEF
$ sqlplus MYUSER/"pass/word"@ABCDEF
$ sqlplus MYUSER/"pass\/word"@ABCDEF
$ sqlplus MYUSER/\""pass/word\""@ABCDEF
None 以上方法有效。
然后我这样试了:
$ sqlplus MYUSER@ABCDEF
SQL*Plus: Release 12.2.0.1.0 Production on Fri Nov 19 15:10:13 2021
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Enter password:
SP2-0306: Invalid option.
Usage: CONN[ECT] [{logon|/|proxy} [AS {SYSDBA|SYSOPER|SYSASM|SYSBACKUP|SYSDG|SYSKM|SYSRAC}] [edition=value]]
where <logon> ::= <username>[/<password>][@<connect_identifier>]
<proxy> ::= <proxyuser>[<username>][/<password>][@<connect_identifier>]
Enter user-name: ^C
这样:
$sqlplus /nolog
connect MYUSER@ABCDEF
SQL*Plus: Release 12.2.0.1.0 Production on Fri Nov 19 15:10:13 2021
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Enter password:
SP2-0306: Invalid option.
Usage: CONN[ECT] [{logon|/|proxy} [AS {SYSDBA|SYSOPER|SYSASM|SYSBACKUP|SYSDG|SYSKM|SYSRAC}] [edition=value]]
where <logon> ::= <username>[/<password>][@<connect_identifier>]
<proxy> ::= <proxyuser>[<username>][/<password>][@<connect_identifier>]
Enter user-name: ^C
无结果。
Google 没有帮助。
我需要使用什么技巧?
重要的是您输入的第一个和最后一个字符必须是 "
。然后解释器(无论是 sqlplus 还是 RDBMS 本身)将剥离它们,并逐字记录剩余的内容。
您的前四次尝试没有成功,但最后三次成功了。
$ sqlplus MYUSER/"pass/word"@ABCDEF
除了 shell1 吞噬了 "
个字符,所以正斜杠 不是 逐字记录。
$ sqlplus MYUSER/"pass\/word"@ABCDEF
这个也很接近,但反斜杠没有帮助,引号仍然被吞噬。
$ sqlplus MYUSER/\""pass/word\""@ABCDEF
实际上,这个可以工作,但我怀疑这不是您所尝试的(即,这是一个打字错误,因为 SO 在您引用时以意想不到的方式处理反斜杠)。在此示例中,sqlplus
main
入口点“接收”了正确匹配的引号字符。
以下所有内容都适合您。
- 让
sqlplus
提示您输入密码并输入"pass/word"
而不是pass/word
。 sqlplus myuser/\"pass/word\"
只要你设置TWO_TASK=ABCDEF
.sqlplus myuser/\"pass/word\"@ABCDEF
# 最简单的 imosqlplus myuser/\""pass/word\""@ABCDEF
sqlplus myuser/\""pass/word"\"@ABCDEF
脚注:
1:如果您使用的是真实操作系统而不是 Microsoft 操作系统。