2016-11-24 65 views
0

我使用phpMyAdmin创建了一个新的MySQL用户homestead,当这样做时,创建了一个具有相同名称的新数据库。如下所示,homestead被授予两个数据库的权限:homesteadhomestead\_%关于MySQL数据库权限,“ _%”是什么意思?

\_%表示什么?我后来创建了一个新的数据库laravel,并希望用户homestead与第一个表具有相同的权限。我是否还需要为laravel\_%添加权限?

enter image description here

+1

启动任何数据库的方式看起来像一个咖啡杯我。 – Eimantas

+0

@Eimantas是的,我想它是的!回过头来看,当我创建用户时,我点击了'授予通配符名称(username \ _%)'的所有特权''。不知道这是什么意思... – user1032531

+0

_可能意味着单个字符的通配符。 %表示零个或多个字符。所以这意味着你可以使用任何以'username'开头的用户名登录,然后登录。 – Eimantas

回答

2

%_只是SQL通配符。该GRANT syntax允许他们:

的_和%通配符在数据库级别授予权限 GRANT语句中指定数据库名称时,是允许的。

您可能会注意到_被转义(\_):

,如果你想使用_字符作为 数据库名称的一部分,你应该在GRANT语句中指定它作为\_,到 防止用户能够访问匹配通配符模式的附加数据库 ;例如,GRANT ... ON`FOO \ _bar`。* TO ....

这显然是特权延伸到与homestead_...

+1

这是完全正确的。可能在创建用户时,您选中了“授予通配符名称(用户名\ _%)所有权限”框。“ –