2015-09-08 4 views
0

У меня есть база данных MySQL 5.x с около 100 таблицами. Я хочу, чтобы предоставить толькоSELECT привилегии на некоторых таблицах:Права на выделенные таблицы

show tables from my_db like '%some_pattern%'; # select only tables 

... и SELECT, INSERT, UPDATE, DELETE на остальных столах.

Как я могу это сделать?

ответ

0

Невозможно предоставить привилегии многим таблицам с одним запросом. Вам нужно сделать запрос для каждой таблицы. Вы можете попробовать использовать административные инструменты, такие как Adminer или phpMyAdmin или аналогичные.

1

попробовать

SELECT CONCAT('GRANT SELECT ON schemaName.', TABLE_NAME, ' to ''username'';') 
FROM INFORMATION_SCHEMA.TABLES 
WHERE TABLE_SCHEMA = 'schemaName' 
    AND TABLE_NAME LIKE '%some_pattern%' 

и

SELECT CONCAT('GRANT SELECT, INSERT, UPDATE, DELETE ON schemaName.', TABLE_NAME, ' to ''username'';') 
FROM INFORMATION_SCHEMA.TABLES 
WHERE TABLE_SCHEMA = 'schemaName' 
    AND TABLE_NAME NOT LIKE '%some_pattern%' 

Затем запустите заявления выше, скопировать полученный SQL и запустить в результате предоставления разрешений