2009-09-07 43 views
1

如何在單個語句中授予多個表的特權?在多個表上選擇特權

mysql> grant select on dbName.crw_changes to sink; 
Query OK, 0 rows affected (0.02 sec) 

mysql> grant select on dbName.crw_changes, dbName.bs_services to sink; 
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' dbName.bs_services at line 1 
+0

如果您查看以前的問題的答案並接受至少一些答案,這將是一件好事。 – 2009-09-07 08:45:25

回答

1

您不能在標準SQL中執行此操作。允許多個用戶,但只有一個表。

對於大多數SQL方言來說也是如此。這是有限制的原因,最重要的是與檢查單獨表格的權限有關,儘管它們在80年代可能比現在更爲相關。

1

你不行。 GRANT SELECT一次只能在一個表上工作。

但是,有一個解決方法。您可以執行如下操作:

SELECT CONCAT('GRANT SELECT ON test.', TABLE_NAME, ' to ''foouser'';') 
FROM  INFORMATION_SCHEMA.TABLES 
WHERE TABLE_SCHEMA = 'test' 
      AND TABLE_NAME LIKE 'foo_%' 

上面提取'test'模式中以'foo_'開頭並將其打印出來的表。然後,您可以將這些名稱複製並粘貼到存儲過程或查詢生成器窗口中並執行它們。

順便說一下,代碼是未經測試(由我)。我把它從http://lists.mysql.com/mysql/202610