15%

Збережіть 15% на всі хостинг-послуги

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

Використовуй код:

Skills
Почати
01.11.2024

Як створити нового користувача та встановити дозволи в 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) або командний рядок / 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.

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

15%

Збережіть 15% на всі хостинг-послуги

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

Використовуй код:

Skills
Почати