含有特殊字符\v的mysql密码为什么会报错

mysql> ALTER USER `db_example`@`%` IDENTIFIED BY 'qeW0zdszb\vZjt4o';
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

mysql> ALTER USER `db_example`@`%` IDENTIFIED BY 'qeW0zdszb\tZjt4o';
Query OK, 0 rows affected (0.00 sec)

MySQL版本:5.7
两个密码qeW0zdszb\vZjt4oqeW0zdszb\tZjt4o 区别只有\v\t

为什么含有\v的密码会报错?在MySQL中设置密码有哪些限制?

当用Spring连接数据库时,如果密码有\字符,配置中还得转义。

阅读 3.4k
2 个回答

MySQL 本身支持一些转义字符

Escape Sequence    Character Represented by Sequence
\0    An ASCII NUL (X'00') character
\'    A single quote (') character
\"    A double quote (") character
\b    A backspace character
\n    A newline (linefeed) character
\r    A carriage return character
\t    A tab character
\Z    ASCII 26 (Control+Z); see note following the table
\\    A backslash (\) character
\%    A % character; see note following the table
\_    A _ character; see note following the table

当然默认开启的好,可以自己在不需要转义的程序里面做特殊处理。
但是如果你想关闭可以 SET sql_mode='NO_BACKSLASH_ESCAPES';关闭转义字符

\t是制表符,我印象中好像\v不是什么特殊字符吧。
我猜测:这里应该是mysql在设置密码的时候对密码串解义了,导致\v没有对应的解义而报错了?
比如你换成\\v看看会不会报错。以及如果不报错的话,你输入密码是要输两个\还是一个,如果是一个,说明设置密码的时候确实经过解义了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题