Бесплатный вебинар
«как найти любимую работу»
Подарки на 150 000 ₽ за участие
Живой эфир
Записи не будет!
00:00:00:00
дн.ч.мин.сек.

Права на чтение в MySQL: как выдать всем пользователям

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

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

SQL
Скопировать код
GRANT SELECT ON db.* TO 'user'@'host' IDENTIFIED BY 'pass';

В этой команде замените db на название вашей БД, user – на имя пользователя, host – на его сервер (например, localhost), а 'pass' – на желаемый пароль. Пользователь получит возможность только чтения данных всех таблиц в базе данных db, но не сможет их изменять.

Кинга Идем в IT: пошаговый план для смены профессии

Расширенные права только для чтения

В дополнение к SELECT рассмотрите возможность предоставить привилегии SHOW VIEW, PROCESS и REPLICATION CLIENT. Вашему пользователю они могут пригодиться для просмотра структур, мониторинга процессов в базе данных или выполнения операций, связанных с репликацией.

Проверка предоставленных привилегий

После присвоения привилегий полезно убедиться в правильности их представления, воспользовавшись командой SHOW GRANTS:

SQL
Скопировать код
SHOW GRANTS FOR 'user'@'host'; -- Пожелаем вам приятного просмотра! :)

Данный шаг поможет вам визуально подтвердить корректность настройки прав доступа.

Безопасность 101: Сдерживание привилегий

Помните знаменитую фразу дяди Бена из "Спайдер-мена": "Большая сила влечет за собой большую ответственность". В контексте MySQL это означает, что стоит избегать выдачи всесторонних привилегий ALL PRIVILEGES пользователю, которому требуется доступ только на чтение. Стоит придерживаться принципа минимума привилегий.

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

Представим базу данных MySQL как сейф (🏦), а привилегию только на чтение – как специальные очки (👓):

Markdown
Скопировать код
🏦: База данных MySQL – Доступ непроверенным запрещен!
👤: Пользователь без прав – Только наблюдатель.

Надеваем эти "очки":

Markdown
Скопировать код
USE mysql;
GRANT SELECT ON database_name.* TO 'username'@'localhost'; // Не забудьте заменить на свои данные!

После этого образ пользователя меняется:

Markdown
Скопировать код
🏦👓➡️👤: Пользователь получает эксклюзивный пропуск на ПРОСМОТР данных без возможности вмешиваться в их содержание!

Очки для наблюдения (привилегия SELECT) позволяют безопасно изучать данные, но не редактировать их.

Внимание к деталям: Указание хоста в правах доступа

Определите хост точно при настройке доступа:

SQL
Скопировать код
GRANT SELECT ON db.* TO 'user'@'%'; -- будьте осторожны, это допускает доступ из любой точки!

С целью обеспечения безопасности лучше указывать конкретный хост или IP-адрес.

Ускоряем процесс: Хранимые процедуры

Используйте хранимые процедуры для более эффективного управления привилегиями. Укажите GRANT внутри процедуры, запускаемой от имени пользователя DEFINER. Это обеспечит вам возможность быстрого управления привилегиями.

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

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

Создание защищённых пользователей

Всегда используйте IDENTIFIED BY 'password' при настройке GRANT. Это подобно зашитой дыре в вашей броне, следовательно, выбирайте надёжный пароль.

Сброс и обновление привилегий

После проведения изменений в правах воспользуйтесь FLUSH PRIVILEGES;. Эта команда обеспечит немедленное применение внесённых изменений.

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

  1. MySQL :: MySQL 8.0 Справочное руководство :: 13.7.1.6 Оператор GRANT – Официальное руководство по оператору GRANT.
  2. Как создать нового пользователя и предоставить ему права в MySQL | DigitalOcean – Пошаговые инструкции по созданию пользователей и распределению прав.
  3. Поиск многоугольника в 2D-сетке, содержащего точку – Stack Overflow – Обсуждение возможностей настройки прав только для чтения в MySQL на портале Stack Overflow.
Проверь как ты усвоил материалы статьи
Пройди тест и узнай насколько ты лучше других читателей
Какую команду необходимо использовать для предоставления пользователю только прав на чтение в MySQL?
1 / 5