在服务器上,通常为了快速登录数据库,我们会使用mysql -hhost -uusername -ppassword db的方式登录数据库,如果密码中没有特殊字符&,会直接进入数据库sql命令行下,如果有特殊字符&,那么就会出现如下提示:

-bash: syntax error near unexpected token `&’

一般情况,我们可以通过命令mysql -hhost -uusername -p db然后根据提示手动输入密码。

另外,这里可以对特殊字符的密码做处理。

1、直接将密码用单引号引起来。

2、在特殊字符&前面加上’’来进行登录。

补充:mysql设置复杂密码中含$特殊符号导致无法命令登录

安全考虑 在设置MYSQL 密码时候加入了$特殊符号,导致在写脚本时运行报以下错误如下

经过一番折腾发现原来就是 $

修改密码即可去掉$

以上为个人经验,希望能给大家一个参考,也希望大家多多支持。如有错误或未考虑完全的地方,望不吝赐教。

MySQL用户密码中的特殊字符叹号(!)的妙用

使用叹号(!)禁止用户终端进入的一个方法。复制代码代码如下:mysql>grantallprivilegesonwubx.*to‘wubx'@'172.16.100.185′identifiedby‘fd52!wubx&,';QueryOK,0rowsaffected(0.00sec)mysql>quit;#mysql-h172.16.100.185-uwubx-pfd52!wubx&,-bash:!wubx@,:eventnotfound仔细看一下,原来他把!后面的字符串做为命令执行了。

在测一下程序方面是不是可以用,写一个PHP测一下。复制代码代码如下:$link=mysql_connect('172.16.100.185′,'wubx','fd52!wubx&,');if(!link){die(‘Couldnotconnect:'.mysql_error());}echo‘Connectedsuccessfully';mysql_close($link);?>#phptestdb.phpConnectedsuccessfully还看程序中能正常识别。PHP还是可以OK通过的。

MYSQl 特殊字符

MYSQL不会自动过滤特殊的字符。正因为不会所以才会产生漏洞。

比如上面的哥们提起的select * from user where username='' or ''='' and password='' or ''=''其中的''=''代表的是'真'那么本来需要判断用户名=?密码=?两个判断都必须为真才能进入网站页面或者程序,结果变成了用户名=?或者'真' 并且 密码=?或者'真'不管用户名密码有没有添对反正可以得到结果为'真',这样就非法登陆了系统并且可以造成破坏。

如何正确地在 MySQL 显示特殊字符

MySql字符转义在字符串中,某些序列具有特殊含义。这些序列均用反斜线(‘\’)开始,即所谓的转义字符。

\' 单引号(‘'’)。\" 双引号(‘"’)。\b 退格符。\n 换行符。

\r 回车符。\t tab字符。\Z ASCII 26(控制(Ctrl)-Z)。

该字符可以编码为‘\Z’,以允许你解决在Windows中ASCII 26代表文件结尾这一问题。(如果你试图使用mysql db_name < file_name,ASCII 26会带来问题)。\\ 反斜线(‘\’)字符。

\%‘%’字符。参见表后面的注解。\_‘_’字符。

参见表后面的注解。