Сэкономьте 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 — от Shared Web Hosting для простых проектов до полностью управляемых VPS Control Panels для команд, которым нужна мощь и гибкость без сложности администрирования bare-metal.