【问题标题】:sqlplus: password contains slash "/" is not acceptedsqlplus:密码包含斜杠“/”不被接受
【发布时间】: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=ABCDEFsqlplus myuser/\"pass/word\" 也应该可以工作。
  • sqlplus myuser/\"pass/word\"@ABCDEF 也应该可以工作。
  • 谢谢,他们的工作就像一个魅力。也许您可以将它们作为解决方案发布。
  • 为了将来参考,许多操作系统和/或应用程序对密码中的不同特殊字符存在问题 - 特别是从命令行登录时。根据我的经验,在命令行中普遍接受的唯一特殊字符是下划线:“_”。

标签: oracle sqlplus


【解决方案1】:

最重要的是,您键入的第一个和最后一个字符必须是"。然后解释器(无论是 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 操作系统。

【讨论】:

    猜你喜欢
    • 2016-04-10
    • 1970-01-01
    • 2021-12-27
    • 1970-01-01
    • 1970-01-01
    • 2014-04-04
    • 2020-08-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多