我使用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