Я работаю над некоторым проектом данных с несколькими другими сотрудниками. Большинство из них довольно новы для SQL, поэтому спросили, могу ли я сделать «сырые» таблицы данных только для чтения, чтобы они не были случайно изменены, как бы я это сделал? В настоящее время у всех пользователей есть разрешения GRANT SELECT ON mydb.* TO 'user'@'%'
, но мне нужно быть немного более открытым.Как сделать некоторые таблицы доступными только для чтения, но разрешить пользователям создавать новые?
Возникает вопрос о создании single table read-only, но похоже, что это лишает пользователей возможности создавать другие таблицы; или если бы они это сделали, они ничего не могли с ними поделать. Кажется, что нет (или я не могу найти) настройки «deny», как в NTFS, которая переопределяет allow/GRANT; из того, что я читаю REVOKE, является только противоположностью предыдущего GRANT, вы не можете «вложить» их.
Я рассматривал возможность создания отдельной «необработанной» базы данных, которая была бы SELECT-только для того, чтобы пользователи могли ее скопировать в базу данных «рабочая область», но это кажется немного взломанным и будет потреблять некоторое полуосвободное пространство на мой бюджетный облачный сервер. Какое правильное решение?
В отсутствие GRANT INSERT и т.д. разрешения на столе они создают, это в принципе бессмысленно, как это было всегда пустуют? –
Да. Без привилегий, предоставляемых продвинутым, ничего нельзя сделать. – oldmonk