Для работы сайта обычно принято создавать отдельную базу данных MySQL и назначать на нее права доступа для конкретного MySQL пользователя.
Как создать дополнительного MySQL пользователя, рассказываем в этой статье.
Создать базу данных MySQL вы можете, подключившись к вашему серверу с правами суперпользователя по протоколу SSH, например, через “Терминал” в панели управления VDS, и выполнив следующие команды:
mysql -u root -p
MariaDB [(none)]> CREATE DATABASE IF NOT EXISTS my_database;
MariaDB [(none)]> CREATE USER 'my_user'@'localhost' IDENTIFIED BY 'StrongP@ssw0rd';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON my_database.* TO 'my_user'@'localhost';
MariaDB [(none)]> FLUSH PRIVILEGES;
Типы прав (вместо ALL PRIVILEGES можно указать конкретные):
| Право | Описание |
|---|---|
| SELECT | Чтение данных |
| INSERT | Вставка строк |
| UPDATE | Обновление строк |
| DELETE | Удаление строк |
| CREATE | Создание таблиц/баз |
| DROP | Удаление таблиц/баз |
| ALTER | Изменение структуры |
| INDEX | Управление индексами |
Пример с ограниченными правами:
MariaDB [(none)]> GRANT SELECT, INSERT, UPDATE ON my_database.* TO 'my_user'@'localhost';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> SHOW GRANTS FOR 'my_user'@'localhost';
MariaDB [(none)]> REVOKE ALL PRIVILEGES ON my_database.* FROM 'my_user'@'localhost';
MariaDB [(none)]> DROP USER 'my_user'@'localhost';
MariaDB [(none)]> DROP DATABASE IF EXISTS my_database;
Важно:
- FLUSH PRIVILEGES — обязателен после GRANT/REVOKE, чтобы изменения вступили в силу
- В MySQL 8+ CREATE USER и GRANT — отдельные команды (в старых версиях можно было делать GRANT … ON … TO user IDENTIFIED BY ‘pass’ — это устарело)
- Храните пароли в надёжном месте