MySQL - Оператор REVOKE: Подробное руководство для начинающих

Здравствуйте, будущие маги баз данных! Сегодня мы окунемся в мир привилегий MySQL и узнаем о операторе REVOKE. Не волнуйтесь, если вы новички; я проведу вас через каждый шаг с терпением kindergarten-учителя, пытающегося объяснить, почему небо голубое. Итак, начнем!

MySQL - Revoke Privileges

Оператор REVOKE в MySQL

Оператор REVOKE в MySQL resembles отнимание у кого-то ключей от вашего дома. Он используется для удаления привилегий у пользователей или ролей, обеспечивая, что они не могут получить доступ или изменить данные, к которым им не следует.

Вот базовая синтаксис оператора REVOKE:

REVOKE privilege_type [(column_list)]
[, privilege_type [(column_list)]] ...
ON [object_type] privilege_level
FROM user [, user] ...

Разберем это на примере:

REVOKE SELECT, INSERT ON database_name.table_name FROM 'user'@'localhost';

В этом примере:

  • Мы отнимаем привилегии SELECT и INSERT
  • Эти привилегии отнимаются на определенной таблице (table_name) в определенной базе данных (database_name)
  • Привилегии отнимаются у пользователя 'user', который подключается из 'localhost'

Представьте это как если бы вы сказали своему младшему брату: "Больше печенья для тебя!". Ты отнимаешь у него привилегию есть печенье, но только то, что находится в банке на кухонном столе.

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

Иногда вы можете захотеть применить радикальные меры и отозвать все привилегии у пользователя. Это как если бы вы посадили своего подростка под домашний арест и отняли у него все гаджеты. Вот как это сделать:

REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'user'@'localhost';

Эта команда отзывает все привилегии и опцию GRANT (которая позволяет пользователю предоставлять привилегии другим) у указанного пользователя.

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

В MySQL substitute-пользователь resembles stunt-дублер в фильмах. Он может представляться другим пользователем. Если вы хотите отозвать эту возможность, вы можете использовать:

REVOKE PROXY ON 'proxied_user'@'localhost' FROM 'proxy_user'@'localhost';

Это предотвращает возможность 'proxy_user' представляться 'proxied_user'. Это как если бы вы сказали своему шаловливому другу, что он больше не может притворяться вами, когда звонит в школу больным!

Отзыв роли

Роли в MySQL resemble должности. Они идут с набором привилегий. Если вы хотите отозвать роль у пользователя, вы можете сделать это:

REVOKE role_name FROM 'user'@'localhost';

Например:

REVOKE 'data_entry_clerk' FROM 'john'@'localhost';

Это удаляет роль 'data_entry_clerk' у Джона. Poor Джон, он был понижен!

Отзыв привилегий с использованием клиентской программы

Вы также можете отзывать привилегии с использованием клиентских программ MySQL. Вот пример использования командной строки mysql:

mysql -u root -p
Enter password: ********
mysql> REVOKE SELECT ON database_name.* FROM 'user'@'localhost';

Этот логин в MySQL как root-пользователь и отзывает привилегию SELECT на все таблицы в database_name от 'user'@'localhost'.

Теперь давайте разместим все эти методы в удобной таблице для быстрого справочника:

Метод Пример
Основной REVOKE REVOKE SELECT, INSERT ON database_name.table_name FROM 'user'@'localhost';
Отзыв всех привилегий REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'user'@'localhost';
Отзыв привилегии Substitute REVOKE PROXY ON 'proxied_user'@'localhost' FROM 'proxy_user'@'localhost';
Отзыв роли REVOKE 'data_entry_clerk' FROM 'john'@'localhost';
Использование клиентской программы mysql -u root -p
mysql> REVOKE SELECT ON database_name.* FROM 'user'@'localhost';

Помните, с большой властью приходит большая ответственность. Как администратор базы данных, вы resembling супергерой вашего мира данных. Используйте оператор REVOKE мудро, чтобы сохранить ваши данные в безопасности и держать пользователей под контролем.

Вот профессиональный совет из моих лет преподавания: Всегда проверяйте свои операторы REVOKE перед выполнением. Prevent ошибку легче, чем исправить ее позже. Доверьте мне, однажды я случайно отозвал все привилегии у себя на работающей базе данных. Давайте просто скажем, что это была длинная ночь с神经ными звонками старшему DBA!

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

Теперь, идите и отывайте привилегии ответственно! И если вы когда-нибудь почувствуете себя перегруженным, просто запомните: даже самые опытные DBA когда-то были новичками. Продолжайте практиковаться, stay curious, и скоро вы будете отзывать привилегии как профи!

Credits: Image by storyset