Бази даних (в т.ч. система MySQL) є сутністю для зберігання інформації у вигляді таблиць. Щоб чужі БД були доступні абсолютно кожному користувачеві на сервері, існує система користувачів цих баз даних. Доступ до будь-якої БД може бути призначений адміністратором (або уповноваженим користувачем) іншому користувачеві, причому він може бути повним або обмеженим. Більш конкретно цей ступінь доступу виражається в привілеях («правах» або «дозволах»).

Зміст

  1. Права для користувачів MySQL
  2. Призначення прав для користувачів 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:

Вхід у меню MySQL management у DirectAdmin

Далі нам необхідно перейти в конкретну базу даних, щоб керувати користувачами, які мають доступ до неї або створити нову через посилання Create new Database:

Вибір бази даних MySQL у DirectAdmin

Тут ми можемо створити нового користувача для даної бази шляхом переходу по Create New Database User , так і прив’язати до неї існуючого. Слід зазначити, що немає спеціально відведеного інтерфейсу для керування користувачами. Він доступний лише за допомогою переходу через якусь базу даних. Щоб дати користувачеві права — переходимо на посилання modify privileges:

Вибір користувача MySQL для зміни його привілеїв у DirectAdmin

На сторінці привілеїв вибираємо ті привілеї, які хочемо видати користувачеві на конкретну базу даних та зберігаємо. Рядок стану нагадає на що та кому виділяються права:

Зміна прав користувача MySQL на базу даних у DirectAdmin

Після цього відбудеться перехід на сторінку підтвердження збереження. Все, права видано.

cPanel

На головній сторінці cPanel нам необхідно знайти розділ Бази даних у ньому перейти Бази даних MySQL:

Вхід у меню MySQL Databases у cPanel

Якщо ми не маємо ні бази, ні користувача, то створюємо їх у відповідних розділах сторінки:

Розділ «Поточні бази даних» MySQL у cPanel

Далі створюємо користувача:

Створення нового користувача MySQL у cPanel

Розділ Поточні користувачі оновиться:

Розділ «Поточні користувачі» баз даних MySQL у cPanel

Для призначення прав певному користувачеві до певної бази даних нам необхідно знайти на сторінці розділ Додати користувача до бази даних та додати необхідного користувача до необхідної бази даних:

Додавання користувача до бази даних

Після додавання користувача до бази даних відкриється діалогове вікно для призначення привілеїв:

Зміна прав користувача MySQL на базу даних у cPanel

Кнопка «Всі права» еквівалентна привілею ALL, описаному на початку керівництва, і призначить усі можливі права користувача в контексті належності користувача певній групі користувачів лише на рівні MySQL сервера.

Після підтвердження внесених змін буде переадресація на сторінку, що підтверджує, що зазначені права були видані і на сторінці керування базами та користувачами MySQL оновиться розділ Поточні бази даних:

Розділ «Поточні бази даних»

Готово. Користувачи призначений до бази даних.

Webuzo

Webuzo складається з 2-х панелей: адміністраторської та користувальницької. Переходимо до панелі користувача і на головній сторінці вибираємо Manage Databases:

Вхід у меню Manage Databases у Webuzo

На сторінці ми можемо:

  • побачити список існуючих баз даних [Database(s)];
  • створити нову базу даних [Create Database];
  • побачити список існуючих користувачів баз даних [Database User(s)];
  • створити користувача баз даних та призначити його певній базі даних [Add User To Database].
Розділи меню Manage Databases у Webuzo

Якщо цільової бази даних поки що не існує, переходимо в Create Database і створюємо нову базу даних:

Створення нової бази даних MySQL у Webuzo

Якщо все ж таки цільова база даних вже існує, то в керуванні базами даних нам необхідно перейти в Add User To Database і створити нового користувача БД або вказати будь-якого існуючого для його прив’язки до бази даних:

Створення нового користувача баз даних MySQL та призначення користувача базі даних у Webuzo

При додаванні користувача до бази даних відкриється нове вікно із запитом призначити права цьому користувачеві. Вибираємо необхідні нам права та підтверджуємо зміни кнопкою Submit Changes.

Зміна прав користувача MySQL на базу даних Webuzo

У разі успішної зміни прав у поточному вікні з’явиться напис Database Privileges Updated. Завдання виконано.