Создание пользователя MySQL и присвоение полных прав

Пройдите тест, узнайте какой профессии подходите и получите бесплатную карьерную консультацию
В конце подарим скидку до 55% на обучение
Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Если вы хотите без лишних заморочек создать нового пользователя MySQL и предоставить ему полные права на управление определённой базой данных, воспользуйтесь следующими командами:

SQL
Скопировать код
CREATE USER 'имя_пользователя'@'хост' IDENTIFIED BY 'новый_пароль';
GRANT ALL ON имя_базы_данных.* TO 'имя_пользователя'@'хост';
FLUSH PRIVILEGES;

Поменяйте 'имя_пользователя', 'хост', 'новый_пароль' и 'имя_базы_данных' на актуальные данные.

Какие привилегии вы предоставляете?

Когда вы предоставляете ALL PRIVILEGES, это словно вы дарите "золотой ключик" вашему пользователю MySQL. Это означает, что пользователь теперь сможет выполнять стандартные операции, такие как SELECT, INSERT, UPDATE, DELETE и другие. Но в то же время пользователь не будет иметь права на предоставление привилегий другим.

Если нужно ограничить доступ к определённым таблицам, примените конструкцию имя_базы_данных.имя_таблицы вместо имя_базы_данных.*. Помните о необходимости заключать имена баз данных, пользователей и хостов в одинарные кавычки.

Задание безопасного пароля

Команда CREATE USER позволяет установить пароль, но часто настройка пароля осуществляется во время предоставления прав с помощью команды GRANT PRIVILEGES. Вот как это выглядит:

SQL
Скопировать код
GRANT ALL PRIVILEGES ON имя_базы_данных.* TO 'имя_пользователя'@'хост' IDENTIFIED BY 'новый_пароль';

Защитите учётные данные, храня их в файле ~/.my.cnf. Это гарантированно обеспечивает безопасность.

Использование команд терминала и ярлыков

Сделайте вашу работу с командной строкой более эффективной, используя такой синтаксис:

Bash
Скопировать код
mysql -u root -p -e "КОМАНДА";

Создайте пользовательские команды оболочки вроде mysql-create-user и mysql-drop-user, чтобы процесс управления базами данных был прост от волшебства.

Применение изменений привилегий

Чтобы изменения прав вступили в силу, воспользуйтесь командой FLUSH PRIVILEGES;. Это аналогично подтверждению изменений в системе доступа.

Визуализация

Для наглядности используйте смайлики:

Markdown
Скопировать код
👷‍♂️ = Новый пользователь
🛠️  = Полный доступ
🏗️  = Одна база данных
SQL
Скопировать код
CREATE USER 'работник'@'localhost' IDENTIFIED BY 'СекретныйКод!'; -- 👷‍♂️ На службе!
GRANT ALL PRIVILEGES ON `project_db`.* TO 'работник'@'localhost'; -- 🛠️ Права выданы!
FLUSH PRIVILEGES; -- 🔑 Доступ открыт!

Теперь наш работник 👷‍♂️ может в полной мере использовать свои 🛠️ на строительной площадке 🏗️ без каких-либо ограничений!

Настраиваемые привилегии

Иногда нет нужды предоставлять пользователю полный набор прав. В том случае вы можете выдать только определённые привилегии:

SQL
Скопировать код
GRANT SELECT, INSERT, UPDATE ON имя_базы_данных.* TO 'временный_пользователь'@'хост';

Для отзыва прав ипользуйте команду REVOKE:

SQL
Скопировать код
REVOKE ALL ON имя_базы_данных.* FROM 'имя_пользователя'@'хост';

Правило предоставления привилегий: смотреть, но не трогать

Очень осторожно используйте GRANT OPTION, которое позволяет пользователю предоставлять права другим. Это мощный инструмент, и важно его ответственно применять.

Работа с неизвестными хостами

Если точный хост пользователя не известен, можно использовать символ % в качестве шаблона. Но будьте осторожны: открытый доступ может нанести ущерб безопасности.

SQL
Скопировать код
GRANT ALL PRIVILEGES ON имя_базы_данных.* TO 'имя_пользователя'@'%'; -- Цель вам это в безопасности!

Всегда лучше использовать конкретные имена хостов или IP-адреса.

Регулярные проверки

Регулярно проводите аудит прав доступа к вашим базам данных, чтобы удостовериться в сохранности данных и корректности настройек.

Полезные материалы

  1. MySQL :: MySQL 8.0 Справочник по командам :: 13.7.1.3 Команда CREATE USER — Официальное руководство по созданию пользователей MySQL.
  2. MySQL :: MySQL 8.0 Справочник по командам :: 13.7.1.6 Команда GRANT — Документация о правах и привилегиях в MySQL.
  3. Как создать нового пользователя и предоставить ему права в MySQL | DigitalOcean — Пошаговое руководство по созданию пользователя и предоставлению прав.
  4. MySQL grant all privileges to database except one table – Stack Overflow — Обсуждение привилегий пользователя MySQL на Stack Overflow.