1

我正在尝试将我的 MySQL 服务器设置为允许从用户名所在的连接进行访问bob*。* 代表任何字符组合。例如,我有三个用户名的帐户bob1, bob2, bobMaster。但是当我输入bob%用户名时,它说访问被拒绝。我使用了错误的通配符还是错误的格式?提前谢谢。

4

1 回答 1

4

你不能那样做。

MySQL 支持 host_name 中的通配符,但不支持 user_name 中的通配符。

手册中所述:

用户名可以是与传入连接尝试的用户名字面匹配的非空白值,也可以是与任何用户名匹配的空白值(空字符串)。具有空白用户名的帐户是匿名用户。要在 SQL 语句中指定匿名用户,请使用带引号的空用户名部分,例如 ''@'localhost'。

您可以在主机名或 IP 地址值中使用通配符“%”和“_”。这些与使用 LIKE 运算符执行的模式匹配操作具有相同的含义。例如,主机值 '%' 匹配任何主机名,而值 '%.mysql.com' 匹配 mysql.com 域中的任何主机。'192.168.1.%' 匹配 192.168.1 C 类网络中的任何主机。

因为您可以在主机值中使用 IP 通配符值(例如,'192.168.1.%' 来匹配子网上的每个主机),所以有人可以通过将主机命名为 192.168.1.somewhere.com 来尝试利用此功能。为了阻止这种尝试,MySQL 不允许匹配以数字和点开头的主机名。因此,如果您有一个名为 1.2.example.com 的主机,它的名称永远不会与帐户名称的主机部分匹配。IP 通配符值只能匹配 IP 地址,不能匹配主机名。

于 2013-08-09T18:14:11.303 回答