Заощадьте 15% на всіх хостингових послугах

Перевірте свої навички і отримайте Знижку на будь-який план хостингу

Використовуй код: Skills Почати
Рубрики
Адміністрація

Як створити нового користувача та встановити дозволи в MySQL

MySQL залишається однією з найбільш широко розгорнутих систем управління реляційними базами даних у світі, забезпечуючи роботу всього — від невеликих особистих проектів до корпоративних додатків. Незалежно від того, чи ви розробник, системний адміністратор чи власник бізнесу, який керує власною інфраструктурою, розуміння того, як створювати користувачів MySQL та налаштовувати їхні дозволи, є обов’язковою навичкою для підтримання безпечного, добре організованого середовища бази даних.

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

Чому управління користувачами MySQL важливо

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

Якщо ви запускаєте MySQL на керованому плані VPS Hosting або Dedicated Server, у вас є повний доступ на рівні root до вашого екземпляра MySQL, що дає вам повний контроль над створенням користувачів та управлінням дозволами. Багато середовищ панелі керування — таких як ті, що доступні з VPS з cPanel — також надають графічний інтерфейс для управління MySQL, який може доповнити описаний тут підхід командного рядка.

Передумови

Перед тим як почати, переконайтеся, що у вас є:

  • MySQL 5.7+ або MySQL 8.0+ встановлена та запущена на вашому сервері
  • Доступ root або доступ до облікового запису суперкористувача MySQL з привілеями GRANT OPTION
  • Доступ до терміналу (Linux/macOS) або Command Prompt / PowerShell (Windows)

Крок 1: Вхід до MySQL

Для управління користувачами та дозволами ви повинні автентифікуватися як користувач з достатніми правами адміністратора. У більшості випадків це обліковий запис root.

Відкрийте свій термінал або командний рядок

  • Linux / macOS: Відкрийте програму терміналу
  • Windows: Відкрийте командний рядок або PowerShell

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

Виконайте наступну команду:

mysql -u root -p

Вам буде запропоновано ввести пароль root. Після успішної автентифікації ви побачите запит MySQL:

mysql>

> Порада безпеки: Якщо ви підключаєтеся до віддаленого сервера MySQL, вкажіть хост за допомогою прапора -h:

> “`bash

> mysql -u root -p -h your_server_ip

> “`

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

Коли ви знаходитесь у оболонці MySQL, ви можете створити нового користувача за допомогою CREATE USER оператора.

Синтаксис

CREATE USER 'username'@'host' IDENTIFIED BY 'password';

Розбір параметрів:

ПараметрОпис
usernameІм’я, яке ви хочете присвоїти новому користувачу
hostХост, з якого користувачу дозволено підключатися. Використовуйте localhost для доступу лише локально або % як підстановочний символ для будь-якого хоста
passwordНадійний, унікальний пароль для цього користувача

Приклад: Створення користувача, доступного з будь-якого хоста

CREATE USER 'newuser'@'%' IDENTIFIED BY 'StrongP@ssw0rd!';

Приклад: Створення користувача, обмеженого на localhost

CREATE USER 'localuser'@'localhost' IDENTIFIED BY 'AnotherStr0ng#Pass';

> Найкраща практика: Де це можливо, обмежуйте користувачів на localhost або конкретну IP-адресу замість використання %. Доступ з підстановочним хостом без необхідності збільшує вашу поверхню атаки.

Примітка MySQL 8.0 щодо плагінів аутентифікації

MySQL 8.0 представив caching_sha2_password як плагін аутентифікації за замовчуванням, що може спричинити проблеми сумісності зі старішими клієнтами або додатками. За потреби ви можете явно встановити метод аутентифікації:

CREATE USER 'newuser'@'%' IDENTIFIED WITH mysql_native_password BY 'StrongP@ssw0rd!';

Крок 3: Надання дозволів користувачу

Створення користувача не надає йому автоматично доступ до жодної бази даних. Ви повинні явно призначити привілеї за допомогою оператора GRANT.

Синтаксис

GRANT privileges ON database.table TO 'username'@'host';

Розбір параметрів:

ПараметрОпис
privilegesРозділений комами список дозволів (наприклад, SELECT, INSERT, UPDATE, DELETE) або ALL PRIVILEGES
database.tableОбласть дії гранту. Використовуйте *.* для всіх баз даних і таблиць, dbname.* для всіх таблиць у конкретній базі даних або dbname.tablename для однієї таблиці
username@hostЦільовий обліковий запис користувача

Загальні привілеї MySQL

ПривілейОпис
SELECTЧитання даних із таблиць
INSERTДодавання нових рядків до таблиць
UPDATEЗміна існуючих рядків
DELETEВидалення рядків із таблиць
CREATEСтворення нових баз даних або таблиць
DROPВидалення баз даних або таблиць
INDEXСтворення або видалення індексів
ALTERЗміна структури таблиці
ALL PRIVILEGESПовний доступ (використовуйте з обережністю)
GRANT OPTIONДозволити користувачу надавати привілеї іншим

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

GRANT ALL PRIVILEGES ON exampledb.* TO 'newuser'@'%';

Приклад: надання доступу лише для читання

GRANT SELECT ON exampledb.* TO 'readonly_user'@'localhost';

Приклад: надання конкретних привілеїв для однієї таблиці

GRANT SELECT, INSERT, UPDATE ON exampledb.orders TO 'app_user'@'localhost';

Приклад: надання глобальних привілеїв (використовуйте рідко)

GRANT ALL PRIVILEGES ON *.* TO 'admin_user'@'localhost' WITH GRANT OPTION;

> Попередження: надання ALL PRIVILEGES ON *.* дає користувачу доступ, еквівалентний суперкористувачу. Зарезервуйте це лише для надійних адміністративних облікових записів.

Крок 4: Очистити привілеї

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

FLUSH PRIVILEGES;

> Примітка: У сучасних версіях MySQL (5.7.3+), FLUSH PRIVILEGES автоматично запускається після GRANT, REVOKE та CREATE USER операторів. Однак явне запущення його після ручного редагування таблиць системи mysql (через INSERT або UPDATE) залишається важливим.

Крок 5: Перевірка дозволів користувача

Завжди переконайтеся, що встановлені вами дозволи правильні перед тим, як запустити обліковий запис користувача в продакшн.

Перевірка прав доступу для конкретного користувача

SHOW GRANTS FOR 'newuser'@'%';

Приклад результату:

+--------------------------------------------------------------+
| Grants for newuser@%                                         |
+--------------------------------------------------------------+
| GRANT USAGE ON *.* TO `newuser`@`%`                          |
| GRANT ALL PRIVILEGES ON `exampledb`.* TO `newuser`@`%`       |
+--------------------------------------------------------------+

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

SELECT user, host FROM mysql.user;

Перевірка власних привілеїв поточного користувача

SHOW GRANTS;

Крок 6: Скасування дозволів (коли це необхідно)

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

Синтаксис

REVOKE privileges ON database.table FROM 'username'@'host';

Приклад: Скасування всіх привілеїв користувача

REVOKE ALL PRIVILEGES ON exampledb.* FROM 'newuser'@'%';
FLUSH PRIVILEGES;

Приклад: Скасування конкретного привілею

REVOKE DELETE ON exampledb.orders FROM 'app_user'@'localhost';

Крок 7: Видалення користувача (за необхідності)

Якщо обліковий запис користувача більше не потрібен, видаліть його повністю, щоб усунути непотрібні вектори доступу:

DROP USER 'newuser'@'%';

Ця команда видаляє обліковий запис користувача та усі пов’язані привілеї в одній операції.

Управління користувачами MySQL на хостингових середовищах

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

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

Для менших проектів або середовищ розробки плани Shared Web Hosting зазвичай включають доступ до phpMyAdmin, який надає веб-інтерфейс для управління користувачами MySQL та базами даних.

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

Найкращі практики безпеки для управління користувачами MySQL

Дотримання технічних кроків — це лише половина роботи. Ось критичні практики безпеки, які повинен впровадити кожен адміністратор:

  1. Ніколи не використовуйте root-акаунт для підключень додатків. Створюйте спеціалізованих користувачів з мінімальними привілеями для кожного додатку.
  2. Використовуйте надійні, унікальні паролі для кожного користувача MySQL. Розгляньте можливість використання менеджера паролів або сховища секретів.
  3. Обмежте доступ хоста до localhost або конкретних IP-адрес, де це можливо.
  4. Регулярно аудіюйте облікові записи користувачів. Видаляйте облікові записи, які більше не активні або необхідні.
  5. Уникайте надання прав з підстановочними символами (*.*), якщо це не абсолютно необхідно для адміністративних завдань.
  6. Увімкніть плагін журналу аудиту MySQL на виробничих серверах для відстеження всієї активності користувачів.
  7. Регулярно змінюйте паролі, особливо після змін персоналу або підозрілих компрометацій.
  8. Використовуйте SSL/TLS для підключень MySQL при підключенні через мережу, навіть у приватній локальній мережі.

Швидкий довідник: Основні команди управління користувачами MySQL

ЗавданняКоманда
Вхід до MySQLmysql -u root -p
Створити нового користувачаCREATE USER 'user'@'host' IDENTIFIED BY 'pass';
Надати всі привілеї на БДGRANT ALL PRIVILEGES ON db.* TO 'user'@'host';
Надати доступ тільки для читанняGRANT SELECT ON db.* TO 'user'@'host';
Оновити привілеїFLUSH PRIVILEGES;
Показати привілеї користувачаSHOW GRANTS FOR 'user'@'host';
Список всіх користувачівSELECT user, host FROM mysql.user;
Відкликати привілеїREVOKE privileges ON db.* FROM 'user'@'host';
Видалити користувачаDROP USER 'user'@'host';

Висновок

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

Команди, розглянуті в цьому посібнику — CREATE USER, GRANT, REVOKE, FLUSH PRIVILEGES, SHOW GRANTS та DROP USER — утворюють основний набір інструментів, який потрібен кожному адміністратору баз даних. Незалежно від того, керуєте ви однією базою даних розробки чи контролюєте десятки виробничих екземплярів, послідовне застосування цих практик збереже ваше середовище MySQL безпечним, легким у обслуговуванні та відповідним вимогам.

Для хостинг-середовища, яке надає повний контроль, необхідний для впровадження цих найкращих практик, дослідіть спектр рішень AlexHost — від Спільного веб-хостингу для простих проектів до повністю керованих Панелей керування VPS для команд, яким потрібна потужність та гнучкість без складності адміністрування на голому залізі.