Бази даних (в т.ч. система MySQL) є сутністю для зберігання інформації у вигляді таблиць. Щоб чужі БД були доступні абсолютно кожному користувачеві на сервері, існує система користувачів цих баз даних. Доступ до будь-якої БД може бути призначений адміністратором (або уповноваженим користувачем) іншому користувачеві, причому він може бути повним або обмеженим. Більш конкретно цей ступінь доступу виражається в привілеях («правах» або «дозволах»).
Зміст
Права для користувачів MySQL
У системі БД MySQL існує певна кількість прав, які вказані нижче з описом. Ці права є правами адміністраторського рівня. Повна інформація про права/привілеї доступна в офіційній документації MySQL:
CREATE — дозволяє створювати нові бази даних та таблиці
DROP — дозволяє видаляти бази даних або таблиці
INSERT — дозволяє додавати рядки до таблиці.
UPDATE — дозволяє змінювати зміст рядків таблиць. Не плутати з ALTER, що дозволяє змінювати саму структуру таблиць (кількість рядків/стовпців, типи стовпців).
DELETE — дозволяє видаляти рядки з таблиці.
ALTER — дозволяє змінювати структуру таблиць. Потребує CREATE та INSERT привілею.
SELECT — дозволяє читати (виводити рядки) таблиці, використовуючи вибірки за стовпцями та/або за деякими арифметичними та логічними критеріями.
GRANT OPTION — дозволяє призначити конкретні права певному користувачеві (також відібрати). Можна дати/відібрати лише ті права, які призначає сам має.
LOCK TABLES — блокує таблицю на час внесення до неї змін, щоб дані в ній не могли змінитися своїм природним шляхом.
REFERENCES — дозволяє створювати зв’язок між таблицями за допомоги зовнішнього ключа.
EVENT — дає право на створення/зміну/видалення завдань для планувальника.
TRIGGER — дозволяє створювати/змінювати/видаляти тригери (прив’язувані до певних таблиць), які під час операцій DELETE, UPDATE чи INSERT роблять додаткові дії.
INDEX — привілей дає право додавати/видаляти індекси до/з таблиць. Самі індекси призначаються вручну і дають змогу заощадити час на пошуку рядків.
CREATE TEMPORARY TABLES — дозволяє створювати тимчасові таблиці на час сесії.
CREATE VIEW — дозволяє створити подання для дані з інших таблиць у вигляді таблиці, яка фактично не існує. Наприклад, так можна зібрати певні дані з трьох таблиць (за допомогою оператора SELECT) і ці дані будуть посилатися лише на дані цих 3-х таблиць, а також будуть об’єднанням, яке не потребує своєї таблиці.
SHOW VIEW — дозволяє перевірити запит CREATE VIEW, за допомогою якого створено певне подання даних (з яких даних складається).
CREATE ROUTINE — дозволяє створити процедуру, яка є заготовленим набором SQL команд.
ALTER ROUTINE — дозволяє змінити процедуру, створену за допомогою CREATE ROUTINE.
EXECUTE — дозволяє викликати готові процедури.
FILE — надає доступ на читання будь-якого файлу на сервері, до якого є доступ у самої системи MySQL і доступ на створення файлу в директоріях, на які MySQL має права запису.
CREATE TABLESPACE (admin) — дозволяє створювати/змінювати/видаляти простори таблиць. Сам по собоі цей простір є логічним і не пов’язаний із структурою БД або схемою. Він декларує розташування об’єктів БД на фізичних носіях та використовується для оптимізації системи БД.
CREATE USER (admin) — дозволяє створювати/змінювати/перейменовувати/вилучати користувачів баз даних.
PROCESS (admin) — дає доступ до інформації про потоки (процеси), які виконуються на сервері.
PROXY (admin) — дозволяє увійти користувачем під виглядом іншого користувача. Використовується адміністратором для перевірки/налагодження прав доступу для користувача.
RELOAD (admin) — дозволяє використання оператора FLUSH, який чистить кеш MySQL
REPLICATION CLIENT (admin) — дозволяє виконувати операції SHOW MASTER STATUS, SHOW SLAVE STATUS та SHOW BINARY LOG.
REPLICATION SLAVE (admin) — даний привілей необхідний користувачам підлеглого сервера БД, щоб цей сервер міг підключатися до головного сервера. Без цього привілею підлеглі сервери не зможуть вимагати оновлення баз даних і таблиць у головного сервера.
SHOW DATABASES (admin) — дозволяє подивитися список баз даних на сервері. Користувачі без адміністративних повноважень зможуть лише побачити бази даних, до яких мають права.
SHUTDOWN (admin) — привілей дозволяє вимикати MySQL-сервер.
SUPER (admin) — привілей, що дає право на безліч операцій. Ось деякі з них:
- дозволяє завершити процеси, що належать іншим користувачам;
- змінити глобальні системні змінні;
- вмикати/вимикати логування;
- проводити оновлення для системних змінних навіть за наявності лише прав на читання;
- запускати/зупиняти реплікації на підлеглих серверах.
ALL (admin) — користувачеві, який отримав цей привілей, автоматично призначаються всі права в рамках рівня привілеїв (можливих привілеїв у принципі, згідно з контекстом видачі привілеїв). Не призначається лише право GRANT OPTION.
Призначення прав для користувачів MySQL у панелях керування хостингом
Розглянемо далі процедуру призначення прав користувачам MySQL у таких панелях керування хостингом, як:
- DirectAdmin
- cPanel
- Webuzo
DirectAdmin
На головній сторінці DirectAdmin з-під рівня користувача в меню Your Account переходимо в розділ MySQL Management:
Далі нам необхідно перейти в конкретну базу даних, щоб керувати користувачами, які мають доступ до неї або створити нову через посилання Create new Database:
Тут ми можемо створити нового користувача для даної бази шляхом переходу по Create New Database User , так і прив’язати до неї існуючого. Слід зазначити, що немає спеціально відведеного інтерфейсу для керування користувачами. Він доступний лише за допомогою переходу через якусь базу даних. Щоб дати користувачеві права — переходимо на посилання modify privileges:
На сторінці привілеїв вибираємо ті привілеї, які хочемо видати користувачеві на конкретну базу даних та зберігаємо. Рядок стану нагадає на що та кому виділяються права:
Після цього відбудеться перехід на сторінку підтвердження збереження. Все, права видано.
cPanel
На головній сторінці cPanel нам необхідно знайти розділ Бази даних у ньому перейти Бази даних MySQL:
Якщо ми не маємо ні бази, ні користувача, то створюємо їх у відповідних розділах сторінки:
Далі створюємо користувача:
Розділ Поточні користувачі оновиться:
Для призначення прав певному користувачеві до певної бази даних нам необхідно знайти на сторінці розділ Додати користувача до бази даних та додати необхідного користувача до необхідної бази даних:
Після додавання користувача до бази даних відкриється діалогове вікно для призначення привілеїв:
Кнопка «Всі права» еквівалентна привілею ALL, описаному на початку керівництва, і призначить усі можливі права користувача в контексті належності користувача певній групі користувачів лише на рівні MySQL сервера.
Після підтвердження внесених змін буде переадресація на сторінку, що підтверджує, що зазначені права були видані і на сторінці керування базами та користувачами MySQL оновиться розділ Поточні бази даних:
Готово. Користувачи призначений до бази даних.
Webuzo
Webuzo складається з 2-х панелей: адміністраторської та користувальницької. Переходимо до панелі користувача і на головній сторінці вибираємо Manage Databases:
На сторінці ми можемо:
- побачити список існуючих баз даних [Database(s)];
- створити нову базу даних [Create Database];
- побачити список існуючих користувачів баз даних [Database User(s)];
- створити користувача баз даних та призначити його певній базі даних [Add User To Database].
Якщо цільової бази даних поки що не існує, переходимо в Create Database і створюємо нову базу даних:
Якщо все ж таки цільова база даних вже існує, то в керуванні базами даних нам необхідно перейти в Add User To Database і створити нового користувача БД або вказати будь-якого існуючого для його прив’язки до бази даних:
При додаванні користувача до бази даних відкриється нове вікно із запитом призначити права цьому користувачеві. Вибираємо необхідні нам права та підтверджуємо зміни кнопкою Submit Changes.
У разі успішної зміни прав у поточному вікні з’явиться напис Database Privileges Updated. Завдання виконано.