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 入口点“接收”了正确匹配的引号字符。

以下所有内容都适合您。

  1. sqlplus 提示您输入密码并输入 "pass/word" 而不是 pass/word
  2. sqlplus myuser/\"pass/word\"只要你设置TWO_TASK=ABCDEF.
  3. sqlplus myuser/\"pass/word\"@ABCDEF # 最简单的 imo
  4. sqlplus myuser/\""pass/word\""@ABCDEF
  5. sqlplus myuser/\""pass/word"\"@ABCDEF

脚注:

1:如果您使用的是真实操作系统而不是 Microsoft 操作系统。