За допомогою команд управління даними можна управляти доступом користувачів до бази даних.
Команда GRANT використовується для призначення привілеїв користувачам.
Синтаксис команди GRANT
- system_priv - системна привілей
- role - роль: набір відповідних повноважень, які адміністратор може колективно надавати користувачам та іншим ролям.
- user - користувач
- PUBLIC - привілей передається всім користувачам
- WITH ADMIN OPTION - якщо надані системні повноваження або ролі, то параметр дозволяє користувачеві передати повноваження або роль іншим користувачам або ролям
Припустимо, користувач Р1 є власником таблиці Student і потрібно передати користувачеві Р2 право на формулювання запитів до цієї таблиці:
Для передачі прав на інші привілеї синтаксис той же самий. Користувач Р1, що є власником таблиці Student, може дозволити користувачеві Р2 вводити рядки в неї:
Передача привілеїв не обмежується передачею єдиною привілеї єдиному користувачеві за допомогою однієї команди GRANT. Допустимі списки привілеїв і / або користувачів з елементами, розділеними комами:
Можна дозволити користувачеві змінювати значення будь-якого або всіх стовпців таблиці:
Якщо необхідно надати комусь все повноваження на конкретний об'єкт, використовується ключове слово ALL:
Коли передаються привілеї з атрибутом PUBLIC. який відноситься до користувачів, а не до привілеїв, то всі користувачі отримують їх автоматично. Найчастіше це застосовується для привілеї SELECT для певних таблиць або уявлень, які потрібно надати кожному користувачу для розгляду. Дозволити кожному користувачеві переглядати таблицю Student можна наступною командою:
Іноді творець таблиці хоче, щоб інші користувачі мали право передавати привілеї на цю таблицю. Це можна зробити за допомогою пропозиції WITH GRANT OPTION. Якщо користувач Р1 бажає, щоб користувач Р2 мав право передавати повноваження на роботу з таблицею Student іншим користувачам, то він повинен передати користувачеві Р2 привілей на виконання відповідних команд:
GRANT SELECT, INSERT ON Student ТО Р2 WITH GRANT OPTION;