2009-09-07 4 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

Было бы хорошо, если бы вы рассмотрели ответы на свои предыдущие вопросы и приняли ответ, по крайней мере, из нескольких из них. –

ответ

1

Вы не можете сделать это в стандартном SQL. Разрешено использование нескольких пользователей, но только одна таблица.

Это правило справедливо и для большинства диалектов SQL. Есть причины для ограничения, в первую очередь связанные с проверкой прав на отдельные таблицы, хотя они, возможно, были более важны в 1980-х годах, чем сейчас.

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_%' 

Вышеуказанные Экстракты таблицы в схеме «тест», которые начинаются с «foo_» и печатает их. Затем вы можете взять эти имена и скопировать и вставить их в окно хранимой процедуры или построителя запросов и выполнить их.

Кстати, код не проверен (мной). Я взял его с http://lists.mysql.com/mysql/202610.