【发布时间】:2021-08-17 04:35:34
【问题描述】:
我有一个带密码的 oracle 数据库
+oS0pocWEpvaX++CN3]8nM‘2eX
如果我尝试使用它连接它
sqlplus -S -L USER/'"+oS0pocWEpvaX++CN3]8nM‘2eX"'@host @script.sql
sqlplus -S -L USER/'+oS0pocWEpvaX++CN3]8nM‘2eX'@host @script.sql
sqlplus -S -L USER/"+oS0pocWEpvaX++CN3]8nM‘2eX"@host @script.sql
它们都因错误而失败
ORA-01017: invalid username/password; logon denied
但是在 sql developer 中使用相同的密码。鉴于此密码无法更改,如何让 sqlplus 工作?
【问题讨论】:
-
您使用的是什么操作系统?我的建议是尝试
sqlplus -S -L 'USER/+oS0pocWEpvaX++CN3]8nM‘2eX@host' @script.sql -
使用 linux ubuntu。 ORA-01017 也失败了:用户名/密码无效;登录被拒绝。
-
某些操作系统上的某些特殊字符在命令行中不起作用,因为它们对该特定操作系统具有特殊意义。在大多数情况下,没有解决办法。它将在 SQL Developer 中运行,因为操作系统在密码内容通过应用程序时不会对其进行解释。根据我的经验,在命令行中通用的唯一特殊字符是下划线 (_)。在您的情况下,我猜想其中一个字符被读取为行尾并且密码被截断,导致 ORA-01017 错误。
-
@pmdba 但是 echo 命令可以正常工作 echo "+oS0pocWEpvaX++CN3]8nM'2eX" +oS0pocWEpvaX++CN3]8nM'2eX 如果操作系统有一个字符问题,它不能正常工作吗?
-
我只能说这不是保证。我建议尝试使用 Oracle Wallet 保存密码,而不是将其直接放在命令行中(这通常不是一个好主意,即使它不会引发错误)。
标签: database oracle passwords escaping sqlplus