Создание пользователя MySQL и присвоение полных прав
Быстрый ответ
Если вы хотите без лишних заморочек создать нового пользователя MySQL и предоставить ему полные права на управление определённой базой данных, воспользуйтесь следующими командами:
CREATE USER 'имя_пользователя'@'хост' IDENTIFIED BY 'новый_пароль';
GRANT ALL ON имя_базы_данных.* TO 'имя_пользователя'@'хост';
FLUSH PRIVILEGES;
Поменяйте 'имя_пользователя'
, 'хост'
, 'новый_пароль'
и 'имя_базы_данных'
на актуальные данные.
Какие привилегии вы предоставляете?
Когда вы предоставляете ALL PRIVILEGES
, это словно вы дарите "золотой ключик" вашему пользователю MySQL. Это означает, что пользователь теперь сможет выполнять стандартные операции, такие как SELECT
, INSERT
, UPDATE
, DELETE
и другие. Но в то же время пользователь не будет иметь права на предоставление привилегий другим.
Если нужно ограничить доступ к определённым таблицам, примените конструкцию имя_базы_данных.имя_таблицы
вместо имя_базы_данных.*
. Помните о необходимости заключать имена баз данных, пользователей и хостов в одинарные кавычки.
Задание безопасного пароля
Команда CREATE USER
позволяет установить пароль, но часто настройка пароля осуществляется во время предоставления прав с помощью команды GRANT PRIVILEGES
. Вот как это выглядит:
GRANT ALL PRIVILEGES ON имя_базы_данных.* TO 'имя_пользователя'@'хост' IDENTIFIED BY 'новый_пароль';
Защитите учётные данные, храня их в файле ~/.my.cnf
. Это гарантированно обеспечивает безопасность.
Использование команд терминала и ярлыков
Сделайте вашу работу с командной строкой более эффективной, используя такой синтаксис:
mysql -u root -p -e "КОМАНДА";
Создайте пользовательские команды оболочки вроде mysql-create-user
и mysql-drop-user
, чтобы процесс управления базами данных был прост от волшебства.
Применение изменений привилегий
Чтобы изменения прав вступили в силу, воспользуйтесь командой FLUSH PRIVILEGES;
. Это аналогично подтверждению изменений в системе доступа.
Визуализация
Для наглядности используйте смайлики:
👷♂️ = Новый пользователь
🛠️ = Полный доступ
🏗️ = Одна база данных
CREATE USER 'работник'@'localhost' IDENTIFIED BY 'СекретныйКод!'; -- 👷♂️ На службе!
GRANT ALL PRIVILEGES ON `project_db`.* TO 'работник'@'localhost'; -- 🛠️ Права выданы!
FLUSH PRIVILEGES; -- 🔑 Доступ открыт!
Теперь наш работник 👷♂️ может в полной мере использовать свои 🛠️ на строительной площадке 🏗️ без каких-либо ограничений!
Настраиваемые привилегии
Иногда нет нужды предоставлять пользователю полный набор прав. В том случае вы можете выдать только определённые привилегии:
GRANT SELECT, INSERT, UPDATE ON имя_базы_данных.* TO 'временный_пользователь'@'хост';
Для отзыва прав ипользуйте команду REVOKE
:
REVOKE ALL ON имя_базы_данных.* FROM 'имя_пользователя'@'хост';
Правило предоставления привилегий: смотреть, но не трогать
Очень осторожно используйте GRANT OPTION
, которое позволяет пользователю предоставлять права другим. Это мощный инструмент, и важно его ответственно применять.
Работа с неизвестными хостами
Если точный хост пользователя не известен, можно использовать символ %
в качестве шаблона. Но будьте осторожны: открытый доступ может нанести ущерб безопасности.
GRANT ALL PRIVILEGES ON имя_базы_данных.* TO 'имя_пользователя'@'%'; -- Цель вам это в безопасности!
Всегда лучше использовать конкретные имена хостов или IP-адреса.
Регулярные проверки
Регулярно проводите аудит прав доступа к вашим базам данных, чтобы удостовериться в сохранности данных и корректности настройек.
Полезные материалы
- MySQL :: MySQL 8.0 Справочник по командам :: 13.7.1.3 Команда CREATE USER — Официальное руководство по созданию пользователей MySQL.
- MySQL :: MySQL 8.0 Справочник по командам :: 13.7.1.6 Команда GRANT — Документация о правах и привилегиях в MySQL.
- Как создать нового пользователя и предоставить ему права в MySQL | DigitalOcean — Пошаговое руководство по созданию пользователя и предоставлению прав.
- MySQL grant all privileges to database except one table – Stack Overflow — Обсуждение привилегий пользователя MySQL на Stack Overflow.