问题描述:
在disql双引号下的特殊字符主要包括美元符$、反引号 `、反斜杠\、感叹号!。
当用户创建用户时,如果密码中涉及单引号+特殊字符时,根据操作系统要求,单引号必须放在双引号内,同时对双引号内的特殊字符进行转义。
eg:用户名user01,密码aaa'$aaaa
用户登录如下图所示。
当CentOS系统中,disql登录密码含有特殊字符感叹号!时,尝试以上面的方式登录。如下图所示。
我们能够发现,当密码登录中含有特殊字符感叹号时,利用前面disql规则是无法完成登录的。原因是因为在CentOS系统中,感叹号与其他字符结合有特殊意义。简单转义之后,感叹号与后面的字符结合产生特殊意义,导致原本的字符失去了本身的意义。从而导致登录失败。
解决方法:
1、将!和原字符分开
eg:用户user01,密码aaa'!aaaa
首先将单引号用双引号括起来"aaa'",在将后面字符串用单引号括起来'!aaaa'。登录如下图所示。
2、将!单独留出来并转义
eg:用户user01,密码aaa'!aaaa
首先将单引号用双引号括起来"aaa'",转义感叹号\!,使用单引号或者双引号将后面字符括起来'aaaa'或"aaaa"。
后面 单引号:
后面双引号:
3、将!作为单个字符处理
eg:用户user01,密码aaa'!aaaa
首先用双引号将单引号括起来"aaa'",将感叹号用双引号或单引号括起来'!',用单引号或双引号将剩余部分括起来'aaaa'或"aaaa"。
详细信息,请到达梦数据库官方查看:达梦数据库 - 新一代大型通用关系型数据库 | 达梦在线服务平台