mysql - 为什么在 MySQL 中引用用户名和主机名?

标签 mysql

我在包括MySQL文档在内的很多资源中都发现了这样的语句

SHOW GRANTS for 'monty'@'localhost';

示例here . 请注意,montylocalhost 都被引用了。我尝试了一个未引用的版本

SHOW GRANTS for monty@localhost;

在 MySQL 控制台中,我得到了完全相同的结果。

谁能解释一下文档和教程中引用这两个词的原因?

最佳答案

那是因为 MySQL 用户名几乎可以包含任何字符,包括引号和空格。例如,这是完全合法的语法:

mysql> grant all on test.* to ' \\"\'@*.'@'localhost';
Query OK, 0 rows affected (0.00 sec)

如果您的用户名包含非字母数字字符,如点、空格或引号,则 MySQL 将抛出错误,除非它被括在引号中并在必要时使用反斜杠正确转义。

关于mysql - 为什么在 MySQL 中引用用户名和主机名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26710551/

相关文章:

php - 选择 UNIX_TIMESTAMP() 返回奇怪的 JSON 键

php - Mysql查询查找多列中共有的记录

php - 查询构建SQL函数

mysql - 在sql中使用外键查询

php - 使用 Eloquent 在 mysql 中左连接后分别获取相同的命名列

php - 热门标签

mysql - 在 OSX Sierra 中找不到错误 MySQL 服务器 PID 文件

mysql - 续集数据库连接池超时错误

mysql - 从不同的表中选择值和计数

mysql - 如何在mysql中将一个用户的表数据插入到不同机器上的另一个用户