SQL*Plus登录问题咨询:含斜杠(/)的数据库密码无法正常登录的解决办法
解决SQL*Plus密码含斜杠(/)的登录问题
我完全懂你这种折腾了好几个小时却没解决的挫败感——带特殊字符的密码在命令行工具里确实容易出各种奇怪的问题,尤其是SQL*Plus对斜杠的解析比较严格。
正确的解决方案有两种,亲测有效:
方法1:用双引号包裹完整的登录串
直接把用户名/密码@连接标识符整个用双引号括起来,这样shell不会拆分斜杠,SQL*Plus能正确识别密码里的/:
$ sqlplus "MYUSER/pass/word@ABCDEF"
执行后会正常进入SQL*Plus(如果密码正确的话),部分环境可能会再次提示确认密码,直接输入pass/word即可。
方法2:先启动SQL*Plus无登录模式,再用带双引号的连接命令
如果第一种方法因为shell环境的限制不好用,可以试试这个步骤:
- 启动无登录的SQL*Plus:
$ sqlplus /nolog
- 在SQL*Plus的命令提示符里,用双引号包裹完整的登录信息执行连接:
SQL> CONNECT "MYUSER/pass/word@ABCDEF"
这条命令里已经包含了正确的密码,回车后就能直接登录成功。
为什么你之前的尝试失败了?
- 直接写
MYUSER/pass/word@ABCDEF:SQL*Plus会把第一个/当成用户名和密码的分隔符,所以它会错误地认为密码是pass,后面的word@ABCDEF被当成连接标识符的一部分,自然匹配不上你的真实密码。 - 用单引号包裹密码
MYUSER/'pass/word'@ABCDEF:部分shell会对单引号内的字符做特殊处理,或者SQL*Plus在解析时会把单引号当成密码的一部分,导致密码不匹配。 - 转义斜杠
pass\/word:这种转义是给shell解析用的,但SQL*Plus本身不需要转义斜杠,反而会把\/当成密码的一部分,导致密码错误。
下次遇到带特殊字符(比如/、@、$)的密码,记住用双引号把整个登录串括起来,基本都能解决这类问题。
内容的提问来源于stack exchange,提问作者zappee
相关产品推荐
相关产品推荐

