【发布时间】:2021-11-19 14:55:39
【问题描述】:
也许这对 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
以上都不起作用。
然后我这样尝试:
$ 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提示您输入密码时,输入"pass/word"而不是pass/word。 -
只要您设置了
TWO_TASK=ABCDEF,sqlplus myuser/\"pass/word\"也应该可以工作。 -
sqlplus myuser/\"pass/word\"@ABCDEF也应该可以工作。 -
谢谢,他们的工作就像一个魅力。也许您可以将它们作为解决方案发布。
-
为了将来参考,许多操作系统和/或应用程序对密码中的不同特殊字符存在问题 - 特别是从命令行登录时。根据我的经验,在命令行中普遍接受的唯一特殊字符是下划线:“_”。