Создание пользователя и настройка прав доступа в MySQL

Как создавать пользователей MySQL и управлять их привилегиями.

При работе с выделенным сервером или VPS одной из ключевых задач является организация хранения и управления данными. MySQL — это система управления базами данных, которая позволяет эффективно структурировать информацию и контролировать доступ пользователей. Она подходит как для небольших проектов, так и для более масштабных задач, обеспечивая безопасность, надежность и удобство в работе.

MySQL использует систему пользователей для разграничения доступа к базам данных. Администратор или уполномоченный пользователь может предоставлять другим пользователям полный или ограниченный доступ к конкретным базам и таблицам.

Привилегии MySQL

Привилегии уровня базы данных и таблиц:

  • CREATE — создание баз данных и таблиц.
  • DROP — удаление баз данных и таблиц.
  • INSERT — добавление строк в таблицы.
  • UPDATE — изменение содержимого строк. Не путать с ALTER, которая изменяет структуру таблиц.
  • DELETE — удаление строк из таблиц.
  • ALTER — изменение структуры таблиц; требует привилегий CREATE и INSERT.
  • SELECT — чтение данных из таблиц.
  • GRANT OPTION — назначение и отзыв привилегий у других пользователей (только тех, которыми владеет сам пользователь).
  • LOCK TABLES — блокировка таблиц на время внесения изменений.
  • REFERENCES — создание связей между таблицами через внешние ключи.
  • EVENT — создание, изменение и удаление заданий планировщика.
  • TRIGGER — создание, изменение и удаление триггеров для операций DELETE, UPDATE и INSERT.
  • INDEX — создание и удаление индексов.
  • CREATE TEMPORARY TABLES — создание временных таблиц на время сессии.
  • CREATE VIEW — создание представлений, агрегирующих данные из других таблиц.
  • SHOW VIEW — просмотр SQL-запроса, на основе которого создано представление.
  • CREATE ROUTINE — создание хранимых процедур.
  • ALTER ROUTINE — изменение хранимых процедур.
  • EXECUTE — выполнение хранимых процедур.
  • FILE — доступ к файлам сервера, доступным MySQL, и создание файлов в директориях с правами записи.

Административные привилегии:

  • CREATE TABLESPACE — создание, изменение и удаление табличных пространств.
  • CREATE USER — создание, изменение и удаление пользователей MySQL.
  • PROCESS — просмотр информации о выполняющихся потоках сервера.
  • PROXY — вход под другим пользователем для проверки прав доступа.
  • RELOAD — выполнение команды FLUSH для очистки кэша MySQL.
  • REPLICATION CLIENT — выполнение команд SHOW MASTER STATUS, SHOW SLAVE STATUS и SHOW BINARY LOG.
  • REPLICATION SLAVE — получение обновлений от ведущего сервера на ведомых серверах.
  • SHOW DATABASES — просмотр всех баз данных на сервере.
  • SHUTDOWN — завершение работы MySQL-сервера.
  • SUPER — расширенные права: завершение процессов других пользователей, изменение глобальных переменных, управление логированием и репликацией.
  • ALL — все доступные привилегии, кроме GRANT OPTION.

Наши услуги и сервисы

ХостингРаботает на сверхбыстрых NVMe дисках. Подходит для сайтов любой сложности.
Заказать
VPSМожно динамически менять параметры и гибко настраивать ОС. Бесплатное администрирование включено.
Заказать
Выделенные серверыДоступны различные сборки на базе Supermicro с процессорами Intel и AMD на борту.
Заказать

Создание пользователя

CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';

По умолчанию новый пользователь не имеет прав на работу с базами данных.

Назначение привилегий

Назначить все привилегии на все базы и таблицы:

GRANT ALL PRIVILEGES ON *.* TO 'newuser'@'localhost';

Назначить конкретные привилегии на конкретную базу или таблицу:

GRANT [тип прав] ON [база].[таблица] TO '[пользователь]'@'localhost';

Для всех баз и таблиц используйте * вместо конкретного имени.

После изменения привилегий необходимо их обновить:

FLUSH PRIVILEGES;

Отзыв привилегий

REVOKE [тип прав] ON [база].[таблица] FROM '[пользователь]'@'localhost';

Удаление пользователя

DROP USER 'demo'@'localhost';

Проверка учётной записи

Выйдите из MySQL:

quit

И войдите под новым пользователем:

mysql -u [имя пользователя] -p

Помощь

Если у вас возникли вопросы или требуется помощь, пожалуйста, свяжитесь с нами через систему тикетов — мы обязательно вам поможем!

Нужна помощь?Наши инженеры бесплатно помогут с любым вопросом за считанные минутыНаписать нам