2013-07-18 2 views
1

Я работаю над некоторым проектом данных с несколькими другими сотрудниками. Большинство из них довольно новы для SQL, поэтому спросили, могу ли я сделать «сырые» таблицы данных только для чтения, чтобы они не были случайно изменены, как бы я это сделал? В настоящее время у всех пользователей есть разрешения GRANT SELECT ON mydb.* TO 'user'@'%', но мне нужно быть немного более открытым.Как сделать некоторые таблицы доступными только для чтения, но разрешить пользователям создавать новые?

Возникает вопрос о создании single table read-only, но похоже, что это лишает пользователей возможности создавать другие таблицы; или если бы они это сделали, они ничего не могли с ними поделать. Кажется, что нет (или я не могу найти) настройки «deny», как в NTFS, которая переопределяет allow/GRANT; из того, что я читаю REVOKE, является только противоположностью предыдущего GRANT, вы не можете «вложить» их.

Я рассматривал возможность создания отдельной «необработанной» базы данных, которая была бы SELECT-только для того, чтобы пользователи могли ее скопировать в базу данных «рабочая область», но это кажется немного взломанным и будет потреблять некоторое полуосвободное пространство на мой бюджетный облачный сервер. Какое правильное решение?

ответ

0
GRANT SELECT ON example.* to 'someuser'@'somehost'; 

Дайте право на чтение только для чтения.

GRANT CREATE ON example TO 'someuser'@'somehost'; 

Дайте создать таблицу привилегий.

+0

В отсутствие GRANT INSERT и т.д. разрешения на столе они создают, это в принципе бессмысленно, как это было всегда пустуют? –

+0

Да. Без привилегий, предоставляемых продвинутым, ничего нельзя сделать. – oldmonk

0

Вы можете сделать одну таблицу MyISAM, считанную только путем сжатия таблицы. Используйте команду myisampack в командной строке, чтобы упаковать таблицу.

Более подробную информацию можно найти в руководстве по MySQL: http://dev.mysql.com/doc/refman/5.0/en/myisampack.html

Смежные вопросы