我使用phpMyAdmin创建了一个新的MySQL用户homestead
,当这样做时,创建了一个具有相同名称的新数据库。如下所示,homestead
被授予两个数据库的权限:homestead
和homestead\_%
。关于MySQL数据库权限,“ _%”是什么意思?
\_%
表示什么?我后来创建了一个新的数据库laravel
,并希望用户homestead
与第一个表具有相同的权限。我是否还需要为laravel\_%
添加权限?
我使用phpMyAdmin创建了一个新的MySQL用户homestead
,当这样做时,创建了一个具有相同名称的新数据库。如下所示,homestead
被授予两个数据库的权限:homestead
和homestead\_%
。关于MySQL数据库权限,“ _%”是什么意思?
\_%
表示什么?我后来创建了一个新的数据库laravel
,并希望用户homestead
与第一个表具有相同的权限。我是否还需要为laravel\_%
添加权限?
%
和_
只是SQL通配符。该GRANT syntax允许他们:
的_和%通配符在数据库级别授予权限 GRANT语句中指定数据库名称时,是允许的。
您可能会注意到_
被转义(\_
):
,如果你想使用
_
字符作为 数据库名称的一部分,你应该在GRANT语句中指定它作为\_
,到 防止用户能够访问匹配通配符模式的附加数据库 ;例如,GRANT ... ON`FOO \ _bar`。* TO ....
这显然是特权延伸到与homestead_...
这是完全正确的。可能在创建用户时,您选中了“授予通配符名称(用户名\ _%)所有权限”框。“ –
启动任何数据库的方式看起来像一个咖啡杯我。 – Eimantas
@Eimantas是的,我想它是的!回过头来看,当我创建用户时,我点击了'授予通配符名称(username \ _%)'的所有特权''。不知道这是什么意思... – user1032531
_可能意味着单个字符的通配符。 %表示零个或多个字符。所以这意味着你可以使用任何以'username'开头的用户名登录,然后登录。 – Eimantas