2012-12-13 75 views
0

爲了讓someuser上做mydb進行選擇,我可以執行以下語句:MySQL授權語法和通配符

GRANT SELECT ON mydb.* TO 'someuser'@'somehost'; 

假設我想允許在只有兩個表中選擇:eventevent_detail

我想我可以做到以下幾點:

GRANT SELECT ON mydb.event TO 'someuser'@'somehost'; 
GRANT SELECT ON mydb.event_detail TO 'someuser'@'somehost'; 

請問下面還工作嗎? (假設沒有其他表匹配)

GRANT SELECT ON mydb.event* TO 'someuser'@'somehost'; 
+0

我懷疑它不會起作用(或者如果用'%'通配符)。但爲什麼不嘗試? –

回答

1

否 - 通配符只能用於整個表或數據庫名稱。

您必須明確鍵入每個表格的授予語句,或者寫一個腳本或程序來爲您執行。基於該GRANT語法

1

GRANT 
... priv_level ... 

priv_level: 
    * 
    | *.* 
    | db_name.* 
    | db_name.tbl_name 
    | tbl_name 
    | db_name.routine_name 

所以我想你不能。無論如何,您可以使用INFORMATION_SCHEMA來找到那些名稱爲您所需的前綴的表格,然後遍歷它們。