为什么在mysql中create user语法中需要撇号

idv4meu8  于 2021-06-15  发布在  Mysql
关注(0)|答案(1)|浏览(272)

我已经看到了问题的答案:如何在我的raspberry pi上打开mysql进行外部/远程连接?
在其他网站上,create user语法中的撇号(')是必需的。

CREATE USER 'jeffrey'@'localhost' IDENTIFIED BY 'password';

但我发现,当用户名和主机名周围省略撇号时,它仍然有效。
例如:

CREATE USER jeffrey@localhost IDENTIFIED BY 'password';

甚至

CREATE USER jeffrey@127.0.0.1 IDENTIFIED BY 'password';

就我所知,将生成一个没有问题的用户。


这种行为是故意的还是不好的(省略撇号)?
当做

nafvub8i

nafvub8i1#

根据dev.mysql.com/doc/refman/5.7/en/account-names.html:
如果用户名和主机名作为未加引号的标识符合法,则不需要加引号。引号是指定 user_name 包含特殊字符(如空格或-)的字符串,或 host_name 包含特殊字符或通配符的字符串(例如。或%;例如, 'test-user'@'%.com' .
所以大概你不能用这个名字 table 没有引用:

CREATE USER table@127.0.0.1 ...

但你可以用 foobar :

CREATE USER foobar@127.0.0.1 ...

相关问题