Как создать пользователя MySQL, выдать права и привилегии
Отсутствие контроля пользователей в MySQL ведет к росту рисков утечек и хакерских атак. Нужно научиться правильно настраивать права доступа, пересматривать привилегии, использовать сложные пароли. Давайте разбираться, как со всем этим работать.

- Как создавать пользователей в MySQL
- Как назначать пользователям права и привилегий
- Сделать пользователя admin\_user админом базы данных:
- Работа с пользователями и их привилегиями
- Управление доступом и безопасностью
- Дополнительные инструменты и примеры их применения
- Возможные ошибки и их устранение
- Заключение
Как создавать пользователей в MySQL
Для работы с пользователями в MySQL есть специальная команда — CREATE USER. С ее помощью можно добавлять в систему новые учетные записи и настраивать параметры авторизации.
Как применять CREATE USER
Создайте новый аккаунт по следующему алгоритму:
Подключитесь к MySQL через терминал или любой клиент (например, MySQL Workbench).
Введите команду для создания пользователя.
Как это будет выглядеть:

Пример создания пользователя:
Логотип MySQLКак создать безопасные пароли
Защитить пользовательские аккаунты от взлома помогут длинные небанальные пароли. Простые рекомендации:
Задавайте сложные пароли: 8+ символов.
Комбинируйте заглавные и строчные буквы, цифры и специальные символы.
Избегайте популярных слов и фраз, личных данных. Не применяйте в качестве пароля даты рождения, номера телефонов, имена.
Всегда настраивайте разные пароли для разных сервисов.
По возможности включайте в MySQL парольные политики и регулярно их актуализируйте.
Как назначать пользователям права и привилегий
Чтобы безопасно работать с базой данных, необходимо не только создать пользовательские учетки, но и правильно распределить права доступа. Привилегий должно быть ровно столько, сколько нужно для выполнения задач. Это поможет снизить риски несанкционированного доступа и минимизировать ущерб от случайных ошибок.
Как применять команду GRANT
Для назначения пользовательских прав используется GRANT. С помощью команды можно присваивать разные уровни доступа к базе данных. Вот список типовых привилегий:
Привилегия | Описание |
SELECT | Чтение информации из таблиц базы |
INSERT | Добавление новых записей в таблицы |
UPDATE | Изменение существующих записей |
DELETE | Удаление записей из таблиц |
CREATE | Создание новых баз данных и таблиц |
DROP | Удаление баз данных и таблиц |
ALTER | Изменение структуры таблиц |
INDEX | Создание и удаление индексов |
ALL PRIVILEGES | Полный доступ ко всем действиям с конкретной базой данных |
Как настраивать привилегии на уровне баз данных и таблиц
В MySQL можно раздавать права доступа для всего сразу или отдельно для баз данных и таблиц. Пользователи будут работать только с теми ресурсами, которые им доступны. Например, менеджер по продажам увидит таблицу с заказами, а вот список сотрудников — нет.
Можно комбинировать разные уровни доступа. Например, дать одному человеку права на чтение (SELECT), добавление (INSERT), изменение (UPDATE) и удаление (DELETE). Но лучше без необходимости так не делать, чтобы не спровоцировать случайные ошибки или инсайдерские угрозы.
Вот примеры команд для настройки прав доступа:
Дать пользователю user1 разрешение смотреть данные:
Разрешить пользователю user2 добавлять, изменять и удалять записи в таблицах:
Сделать пользователя admin\_user админом базы данных:
Работа с пользователями и их привилегиями
Управление пользователями — это не только создание аккаунтов и назначение базовых привилегий. Чтобы поддерживать безопасность баз данных, нужно постоянно проверять и актуализировать права доступа и пароли. В MySQL для этого есть специальные команды.
Как просматривать существующих пользователей
Чтобы управлять правами доступа, нужно сначала узнать, какие пользователи есть в системе и какие у них привилегии.
Примеры команд для поиска пользователей:
Как изменить пароли и привилегии
Команды для изменения пользовательских паролей:
Действие | Команда | Пояснение |
Смена пароля | ALTER USER 'user1'@'localhost' IDENTIFIED BY 'new_password'; | Задает новый пароль для пользователя user1 на нужном хосте |
Смена пароля | SET PASSWORD FOR 'user1'@'localhost' = PASSWORD('new_password'); | Позволяет менять пароли в более старых версиях MySQL |
Применение изменений | FLUSH PRIVILEGES; | Для прямых изменений таблиц mysql.user, после ручного ввода UPDATE/INSERT в grant tables (НЕ требуется после GRANT/CREATE USER/REVOKE) |
Команды для управления привилегиями:
Действие | Команда | Пояснение |
Предоставить привилегии | GRANT SELECT, INSERT ON mydatabase.* TO 'user1'@'localhost'; | Дает пользователю user1 права на чтение и изменение данных в базе mydatabase |
Отозвать привилегии | REVOKE DELETE ON mydatabase.* FROM 'user1'@'localhost'; | Отзывает право на удаление данных для пользователя user1 в базе mydatabase |
Проверка привилегий | SHOW GRANTS FOR 'user1'@'localhost'; | Показывает актуальные привилегии пользователя |
Просмотр всех пользователей | SELECT User, Host FROM mysql.user; | Выдает список всех пользователей MySQL и хосты, с которых они могут подключаться к базам |
Управление доступом и безопасностью
Вы должны знать, кто и к чему имеет доступ, следить за настройками безопасности. Чем точнее настроите права доступа и пользовательские параметры, тем меньше рисков, что данные утекут или кто-то совершит несанкционированные действия.
Как организовать безопасный сетевой доступ
Простые рекомендации, которые позволят снизить риски безопасности:
Не используйте общие учетки — создавайте отдельные под каждого пользователя.
Настройте белый список с конкретными IP-адресами или диапазонами, чтобы избежать неизвестных и случайных подключений.
Шифруйте соединения (TLS/SSL), чтобы защитить передаваемые данные.
Следите за безопасностью удаленного доступа для администраторов.
Регулярно проверяйте параметры bind-address, настройки брандмауэра и порты, чтобы убедиться, что MySQL доступен только легитимным пользователям.
Для большей безопасности настройте сервер так, чтобы он принимал только защищенные соединения, а клиент мог проверять подлинность сервера.
Как повысить уровень безопасности базы данных
Чтобы система не превратилась в легкую добычу для хакеров и инсайдеров, соблюдайте базовые меры:
Регулярно проверяйте, актуальны ли назначенные права.
Удаляйте старые учетные записи и избыточные привилегии.
Ведите журнал логов, чтобы отслеживать попытки входа, изменения в базе и подозрительные действия.
Обновляйте MySQL до последних версий, чтобы вовремя избавляться от уязвимостей в старых.
Используйте небальнальные пароли и постоянно меняйте их, особенно для административных учеток.
Проверяйте конфигурацию my.cnf: отключайте ненужные функции и плагины, чтобы уменьшить поверхность возможной атаки.
Дополнительные инструменты и примеры их применения
В MySQL есть встроенные инструменты, которые позволяют создавать суперпользователей, управлять правами, без рисков удалять учетки и отзывать привилегии.
Создание суперпользователя
Для задач администрирования нужна учетная запись суперпользователя с полными полномочиями. Под ней можно выполнять настройки серверов, управлять объектами баз данных и обслуживать инфраструктуру. Рядовые учетные записи для таких задач не подойдут.
В MySQL можно вручную создать учетку суперпользователя и выдать полный набор привилегий. Пример:
ALL PRIVILEGES — полный доступ ко всем базам и таблицам;
*.* — указывает, что привилегии действуют во всей системе;
WITH GRANT OPTION — разрешает суперпользователю назначать права другим.
Такую учетную запись нужно защищать сложным паролем и использовать только при необходимости. Это поможет снизить риски ошибок и превышения полномочий.
Удаление и отзыв прав
Если хотите ограничить доступ для конкретного пользователя или удалить аккаунт из системы, примените команды REVOKE и DROP USER.
REVOKE подойдет, если хотите ограничить действия пользователя, но не собираетесь удалять его учетную запись. Вот так можно отозвать права на изменения данных, сохранив права на чтение:
Если сотруднику доступ больше не нужен, удалите его учетную запись:
После удаления пользователь уже не сможет работать в MySQL.
Возможные ошибки и их устранение
Типичные проблемы, их причины и рекомендации по устранению:
Проблема | Причина | Возможное решение |
Access denied for user | Пользователь вводит неверный пароль, подключается не с того хоста или не имеет нужных прав | Проверьте наличие пользователя, назначьте корректный пароль и выдайте релевантные привилегии |
Ошибка из-за некорректного хоста | Пользователь создавался для одного хоста, а подключается с другого | Создайте пользователя для нужного хоста и назначьте ему релевантные привилегии |
Назначенные права не работают | Сервер не обновил кеш привилегий после изменений | Обновите кеш |
Недостаточно прав для изменения данных | Пользователю назначены только права на чтение, а изменения он вносить не может | Выдайте точечные права INSERT, UPDATE и DELETE в нужной базе данных или таблице |
Требование сменить пароль | Аккаунт использует временный пароль. Либо пароль нормальный, но его уже нужно менять согласно требованиям парольной политики | Задайте новый постоянный пароль с помощью команды ALTER USER |
Ошибка при отзыве прав | Привилегии, которые вы хотели отозвать, не совпадают с реальными правами пользователя | Выведите список действующих привилегий и отзовите все ненужные права |
Клиент не поддерживает плагин аутентификации | Применяется устаревший клиент | Переключите пользователя на плагин mysql_native_password |
Нет доступа к нужной базе | Привилегии назначены на другой объект или не назначены вообще | Проверьте права и выдайте доступ к конкретной базе или таблице |
Заключение
Управление пользователями в MySQL— это постоянная работа администратора баз данных, которая начинается с правильных паролей, принципа минимальных привилегий и регулярного аудита доступа. Эти фундаментальные принципы безопасности применимы ко всем современным СУБД, включая PostgreSQL, где вместо CREATE USER используется CREATE ROLE с аналогичной системой GRANT привилегий.

В сервисе Cloud.ru Evolution Managed PostgreSQL® все современные практики уже встроены в готовые кластеры с автоматическим резервным копированием, Point-in-Time Recovery, встроенным мониторингом загрузки CPU/RAM/IO и возможностью масштабирования vCPU и дискового пространства NVMe в пару кликов при SLA доступности 99,7%. Для тестирования доступен бесплатный тариф с 2 vCPU, 4 ГБ RAM и 30 ГБ NVMe.

