2016-11-24 648 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

這是完全正確的。可能在創建用戶時,您選中了「授予通配符名稱(用戶名\ _%)所有權限」框。「 –