Надати доступ до всіх таблиць бази даних


13

Нещодавно я хотів поділитися правами регулярного доступу з одним користувачем сервера, і зрозумів, що проста CREATE USERта GRANT ALL ON DATABASEкоманда не дозволяє йому запускати прості SELECTдані.

Я хотів би надати права на всі таблиці з даної бази даних певному користувачеві, але я не впевнений, чи є найкращою ідеєю надати йому доступ до всієї схеми, publicоскільки я не знаю, чи дозволить це якийсь привілей ескалація. Чи є інший спосіб?


Чому ти просто не можеш GRANT SELECT ON TableName TO [Domain\User]? Зазвичай я просто призначаю користувачів db_datareaderроль, якщо все, що їм потрібно, це доступ для читання до всіх таблиць, але я не впевнений, наскільки детальним ви хочете бути.
Kris Gruttemeyer

Я хотів би надати всі CRUD всі таблиці в базі даних. Крім того, DROPping та СТВОРЕННЯ всередині цієї бази даних також можуть виявитися корисними.
d33tah

Відповіді:


19

Привілей DATABASEлише надає загальні права на з'єднання з базою даних і не більше. Користувач із таким правом може бачити лише те, що дозволено бачити широка громадськість.

Щоб надати доступ для читання до всіх таблиць , вам також потрібні привілеї для всіх схем і таблиць:

GRANT USAGE ON SCHEMA public TO myuser; -- more schemas?
GRANT SELECT ON ALL TABLES IN SCHEMA public TO myuser;

Ви також можете встановити привілеї для майбутніх схем і таблиць. Виконати для кожної ролі, яка створює об’єкти у вашому db

ALTER DEFAULT PRIVILEGES FOR ROLE mycreating_user IN SCHEMA public
GRANT SELECT ON TABLES TO myuser;

Але вам насамперед потрібно зрозуміти всю концепцію .
І майже завжди краще об'єднати привілеї в групові ролі, а потім надати / відкликати групову роль на / з ролей користувача. Пов'язані:


Це myusrдрукарська помилка? Чи не повинно бути myuser?
attomos

1
@attomos: У прикладі це повинен бути інший користувач. Я уточнив.
Ервін Брандстеттер
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.