用户名中的通配符

时间:2013-08-09 18:09:01

标签: mysql

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

1 个答案:

答案 0 :(得分:4)

你做不到。

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

manual

中所述
  

用户名是字面上匹配的非空值   传入连接尝试的用户名,或空值(空   字符串)匹配任何用户名。具有空白用户名的帐户   是一个匿名用户。要在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地址,而不能匹配主机   名。