为什么在mysql中创建用户语法中需要撇号

时间:2018-12-17 23:59:08

标签: mysql syntax mariadb

我在问题中提供的答案中看到了: How do I open up my MySQL on my Raspberry Pi for Outside / Remote Connections?

在其他网站上,需要使用创建用户语法中的撇号(')。

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

但是我发现当用户名和主机名之间省略撇号时,它仍然有效。

例如:

CREATE USER jeffrey@localhost IDENTIFIED BY 'password'; 

甚至

CREATE USER jeffrey@127.0.0.1 IDENTIFIED BY 'password'; 
据我所知,

将产生一个没有问题的用户。

Image of create user syntax

Image of result of create user syntax

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

致谢

1 个答案:

答案 0 :(得分:1)

根据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 ...