我试图将我的MySQL服务器设置为允许从用户名为bob*
的连接进行访问。
*表示任何字符组合。例如,我有三个帐户,用户名为bob1, bob2, bobMaster
。但是当我输入bob%
作为用户名时,它表示拒绝访问。我使用错误的通配符还是错误的格式?提前谢谢。
答案 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地址,而不能匹配主机 名。