В СУБД MySQL доступно много действий для работы с пользователями. Одно из таких действий - удаление пользователя. Также дополнительно можно узнать какие полномочия присутствуют у пользователя и при необходимости лишить определённых прав.
В данной статье будет описано как удалить пользователя в MySQL в операционной системе Ubuntu 20.04.
Содержание статьи
- Как посмотреть хосты пользователя
- Как отозвать полномочия пользователя MySQL
- Как удалить пользователя MySQL
- Как удалить подключенного пользователя
- Выводы
Как посмотреть хосты пользователя
В MySQL пользователи не существуют сами по себе, они привязаны к хостам с которых к ним можно подключиться. Чтобы узнать к какому типу хоста привязан пользователь необходимо выполнить следующий SQL запрос:
SELECT user, host FROM mysql.user;
Тип хоста localhost означает что пользователь может входить под своей учетной записью только с локального сервера (на котором установлен MySQL), символ процента % означает что пользователь может подключиться под своей учетной записью удаленно и с любого хоста.
Как отозвать полномочия пользователя MySQL
Для начала необходимо войти в консоль MySQL. Для этого в терминале необходимо ввести следующую команду, где alex имя вашего пользователя:
mysql -u alex -p
В качестве примера вход в оболочку MySQL был осуществлен под пользователем alex.
Перед удалением пользователя в MySQL бывает полезным посмотреть права пользователя и при необходимости лишить его этих прав. Далее необходимо отобразить права нужного пользователя. Чтобы отобразить права текущего пользователя (который в данный момент подключен к консоли MySQL) можно выполнить одну из перечисленных ниже команд. Результат вывода будет одинаков везде независимо от выбранной команды:
SHOW GRANTS;
SHOW GRANTS FOR CURRENT_USER;
SHOW GRANTS FOR CURRENT_USER();
Если права необходимо отобразить для конкретного пользователя, то необходимо воспользоваться следующей командой:
SHOW GRANTS FOR 'alex'@'localhost';
В приведенном примере были выведены все права пользователя alex. В качестве значений сначала указывается имя пользователя присутствующего на сервере MySQL, а через знак @ указывается тип учетной записи (localhost, %, имя сайта/домена, IP адрес).
В MySQL привилегии делятся на статические и динамические. Статические привилегии встроены в сам сервер MySQL, в отличие от динамических привилегий, которые можно определить во время выполнения запроса. Полный список всех доступных привилегий в MySQL доступен на официальном сайте MySQL
Например, для того чтобы убрать (отозвать) разрешения на UPDATE и INSERT для пользователя alex, который может подключаться удалённо (%) необходимо выполнить следующий SQL запрос:
REVOKE UPDATE, INSERT ON MyGuests FROM 'alex'@'%';
Для того что отобрать все права на конкретную базу данных для конкретного пользователя, например, alex, сразу необходимо выполнить SQL запрос:
REVOKE ALL ON test_db FROM 'alex'@'%';
При выполнении SQL оператора REVOKE подразумевается, что пользователю уже назначены права, которые необходимо отобрать иначе отобразится следующая ошибка:
ERROR 1147 (42000): There is no such grant defined for user 'alex' on host '%' on table 'MyGuests'
Как удалить пользователя MySQL
Для удаления пользователя в MySQL необходимо использовать SQL инструкцию DROP. Например, команда для удаления пользователя alex выглядит следующим образом:
DROP USER alex;
Как удалить подключенного пользователя
Если необходимо удалить пользователя, который подключен в текущий момент то сначала необходимо досрочно прервать его сессию. Для этого необходимо узнать ID сессии. Для этого необходимо выполнить команду:
SHOW PROCESSLIST;
В столбце Id будет отображен уникальный номер (ID) подключенного пользователя. Запомните его. Например, для того чтобы завершить сессию пользователя alex с идентификатором 16 необходимо выполнить команду:
KILL 16;
Если выполнить команду SHOW PROCESSLIST ещё раз, то можно увидеть что пользователь с ID 16 отсутствует:
После того как сессия пользователя будет завершена, пользователя можно удалить при помощи инструкции DROP. Например:
DROP USER alex;
Выводы
В данной статье было подробно описано как узнать полномочия пользователя в СУБД MySQL, а также как их отнять у пользователя. Дополнительно было рассмотрено как удалить пользователя MySQL. Если у вас остались вопросы задавайте их в комментариях!
Anubis – это максимально легкое open-source решение, созданное специально для защиты небольших веб-ресурсов от бесконечного потока запросов от ботов и AI парсеров. Этот инструмент можно считать "ядерным вариантом", потому что он заставляет ботов выполнять вычисления похожие на майнинг криптовалюты. Но это неплохая альтернатива для тех, кто не может или не хочет использовать Cloudflare. Посмотреть детали















