За умовчанням у MySQL буде лише один користувач — root. Це адміністратор з доступом до всіх баз даних та таблиць усередині цих баз.

У цій статті покажемо, як створити нового користувача MySQL та надати йому права доступу за допомогою командного рядка.

Це зручно, якщо потрібно надати доступ до конкретної таблиці іншій людині, але з обмеженими правами. Наприклад, щоб вона могла її редагувати, але не могла видалити.

Що всередині

  1. Підключитися до сервера та зайти до MySQL
  2. Створити користувача MySQL
  3. Налаштувати права доступу
  4. Забрати права доступу
  5. Видалити користувача
  6. Вийти з MySQL

Підключитися до сервера та зайти до MySQL

Спочатку підключіться до сервера SSH. Зазвичай хостинг-провайдери надсилають логін та пароль для підключення у листі про активацію хостингу. У нас цей лист називається по-різному залежно від типу хостингу: «Ваш віртуальний хостинг готовий до використання», «Це ваш VPS готовий?» або «Виділений сервер замовляли?».

Після підключення до сервера авторизуйтесь як root користувач MySQL за допомогою команди:

mysql -u root -p

Створити користувача MySQL

В іншій нашій статті ми показали, як створити базу даних MySQL . Задля прикладу створили у ній таблицю зі списком товарів для книгарні. Припустимо, що необхідно передати управління таблицею іншій людині. Йому потрібно створити нового користувача MySQL. Використовуйте для цього команду CREATE USER з таким синтаксисом:

CREATE USER “ім’я_користувача“@”хост” IDENTIFIED BY “пароль“;

Параметр «хост» у команді означає пристрій, з якого людина зможе підключатися до сервера MySQL. Тут можна використовувати кілька варіантів:

  • localhost. Означає, що доступ до MySQL з’явиться у користувача лише після того, як він підключиться до сервера;
  • IP-адреса пристрою в мережі, з якого людина буде підключатися до MySQL;
  • %. Означає, що користувач матиме доступ до MySQL з будь-якого пристрою.

В останніх двох варіантах додатково підключатися до сервера не потрібно, але доведеться спочатку дозволити віддалені підключення в налаштуваннях MySQL.

Якщо ви не знаєте, який хост вказати, використовуйте localhost. Це найбезпечніший варіант. Доведеться додатково підключатися до сервера, зате зловмисникам буде складніше отримати доступ до бази даних.

Тепер підставимо до команди реальні дані. Не забудьте, що всі команди MySQL повинні закінчуватися крапкою з комою.

CREATE USER "bookstore_administrator"@"localhost" IDENTIFIED BY "Hgy467Hkgd";

Налаштувати права доступу

Користувача створили, але він нічого не може зробити з базою даних, доки ви не призначите йому привілеї. Для цього використовуйте команду GRANT з таким синтаксисом:

GRANT ПРАВО, ПРАВО ON база_даних.таблиця TO ім’я_користувача“@”хост“;

Право — це, наприклад, можливість редагувати базу даних або створювати нового користувача. Якщо потрібно надати відразу кілька прав, пропишіть їх у команді через кому. Ось список прав, які часто використовуються:

  • ALL — дати всі права до бази даних, за винятком GRANT OPTION. Якщо ви не вкажете назву конкретної бази даних, користувач отримає повний доступ до всього сервера MySQL;
  • CREATE — право створювати нові бази даних та таблиці;
  • DELETE — право видаляти рядки з таблиці;
  • DROP — право видаляти бази даних або таблиці;
  • GRANT OPTION — право призначати чи відбирати права. Але вдасться дати або відібрати тільки ті права, якими володіє користувач, який використовує команду;
  • INSERT — право створювати рядки у таблиці;
  • SELECT — право переглядати рядки в таблицях;
  • UPDATE — право змінювати зміст рядків у таблицях.

Тепер давайте надамо нашому користувачеві bookstore_administrator право на створення таблиць у базі даних bookstore. А також дозволимо додавати записи до цих таблиць:

GRANT CREATE, INSERT ON bookstore.* TO "bookstore_administrator"@"localhost";

Зірочка у нашому прикладі означає «всі таблиці всередині бази даних bookstore». Ви також можете замінити ім’я бази даних на зірочку, щоб надати користувачеві права для всіх баз даних на сервері.

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

FLUSH PRIVILEGES;

Тепер подивимося, які доступи є у bookstore_administrator :

SHOW GRANTS FOR "bookstore_administrator"@"localhost";

Результат буде таким:

mysql створити користувача

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

GRANT ALL ON bookstore.* TO "bookstore_administrator"@"localhost";

Перезавантажуємо привілеї командою FLUSH PRIVILEGES та перевіряємо командою SHOW GRANTS:

створити користувача mysql

Забрати права доступу

Якщо привілеї потрібно навпаки забрати, запустіть команду REVOKE:

REVOKE ПРАВО ON база_даних.таблиця FROM “ім’я_користувача“@”хост“;

Допустимо, нам потрібно забрати у користувача bookstore_administrator право видаляти таблиці в базі даних bookstore . Тоді команда буде такою:

REVOKE DROP ON bookstore.* FROM "bookstore_administrator"@"localhost";

Не забудьте знову перезавантажити привілеї командою FLUSH PRIVILEGES.

Видалити користувача MySQL

Щоб видалити користувача MySQL, використовуйте команду DROP USER:

DROP USER “ім’я_користувача“@”хост“;

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

Вийти з MySQL

Наприкінці роботи відключіться від MySQL-сервера за допомогою команди:

q