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

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

Вы обнаружили в своей базе данных неиспользуемого или ненужного пользователя и хотите навести порядок? Удаление учетной записи в MySQL — это не просто команда DROP USER. Это многоэтапный процесс, где любая ошибка может привести к неожиданным последствиям.

Вы когда-нибудь сталкивались с ошибкой, когда пользователь не удаляется, хотя вы всё сделали правильно? Частая причина — активные подключения или забытые привилегии.

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

Поймете, как просмотреть все его права и привилегии перед удалением. Мы покажем, как безопасно отозвать разрешения на конкретные базы данных, такие как UPDATE или INSERT. А что делать, если пользователь в данный момент онлайн? Мы раскроем секрет, как аккуратно завершить его сессию, узнав ID процесса.

Этот материал сэкономит вам время и избавит от головной боли, связанной с блокировками и ошибками прав доступа. Готовы навести идеальный порядок в вашей СУБД? Переходите к статье и очищайте вашу систему от лишнего!


В СУБД MySQL доступно много действий для работы с пользователями. Одно из таких действий - удаление пользователя. Также дополнительно можно узнать какие полномочия присутствуют у пользователя и при необходимости лишить определённых прав.

В данной статье будет описано как удалить пользователя в MySQL в операционной системе Ubuntu 20.04.


Содержание статьи

Как посмотреть хосты пользователя

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

SELECT user, host FROM mysql.user;
Удаляем пользователя MySQL: полное руководство с примерами

Тип хоста localhost означает что пользователь может входить под своей учетной записью только с локального сервера (на котором установлен MySQL), символ процента % означает что пользователь может подключиться под своей учетной записью удаленно и с любого хоста.

Как отозвать полномочия пользователя MySQL

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

mysql -u alex -p
Удаляем пользователя MySQL: полное руководство с примерами

В качестве примера вход в оболочку MySQL был осуществлен под пользователем alex.

Перед удалением пользователя в MySQL бывает полезным посмотреть права пользователя и при необходимости лишить его этих прав. Далее необходимо отобразить права нужного пользователя. Чтобы отобразить права текущего пользователя (который в данный момент подключен к консоли MySQL) можно выполнить одну из перечисленных ниже команд. Результат вывода будет одинаков везде независимо от выбранной команды:

SHOW GRANTS; SHOW GRANTS FOR CURRENT_USER; SHOW GRANTS FOR CURRENT_USER();
Удаляем пользователя MySQL: полное руководство с примерами

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

SHOW GRANTS FOR 'alex'@'localhost';
Удаляем пользователя MySQL: полное руководство с примерами

В приведенном примере были выведены все права пользователя alex. В качестве значений сначала указывается имя пользователя присутствующего на сервере MySQL, а через знак @ указывается тип учетной записи (localhost, %, имя сайта/домена, IP адрес).

В MySQL привилегии делятся на статические и динамические. Статические привилегии встроены в сам сервер MySQL, в отличие от динамических привилегий, которые можно определить во время выполнения запроса. Полный список всех доступных привилегий в MySQL доступен на официальном сайте MySQL

Например, для того чтобы убрать (отозвать) разрешения на UPDATE и INSERT для пользователя alex, который может подключаться удалённо (%) необходимо выполнить следующий SQL запрос:

REVOKE UPDATE, INSERT ON MyGuests FROM 'alex'@'%';
Удаляем пользователя MySQL: полное руководство с примерами

Для того что отобрать все права на конкретную базу данных для конкретного пользователя, например, alex, сразу необходимо выполнить SQL запрос:

REVOKE ALL ON test_db FROM 'alex'@'%';
Удаляем пользователя MySQL: полное руководство с примерами

При выполнении SQL оператора REVOKE подразумевается, что пользователю уже назначены права, которые необходимо отобрать иначе отобразится следующая ошибка:

ERROR 1147 (42000): There is no such grant defined for user 'alex' on host '%' on table 'MyGuests'
Удаляем пользователя MySQL: полное руководство с примерами

Как удалить пользователя MySQL

Для удаления пользователя в MySQL необходимо использовать SQL инструкцию DROP. Например, команда для удаления пользователя alex выглядит следующим образом:

DROP USER alex;
Удаляем пользователя MySQL: полное руководство с примерами

Как удалить подключенного пользователя

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

SHOW PROCESSLIST;
Удаляем пользователя MySQL: полное руководство с примерами

В столбце Id будет отображен уникальный номер (ID) подключенного пользователя. Запомните его. Например, для того чтобы завершить сессию пользователя alex с идентификатором 16 необходимо выполнить команду:

KILL 16;
Удаляем пользователя MySQL: полное руководство с примерами

Если выполнить команду SHOW PROCESSLIST ещё раз, то можно увидеть что пользователь с ID 16 отсутствует:

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

После того как сессия пользователя будет завершена, пользователя можно удалить при помощи инструкции DROP. Например:

DROP USER alex;
Удаляем пользователя MySQL: полное руководство с примерами

Выводы

В данной статье было подробно описано как узнать полномочия пользователя в СУБД MySQL, а также как их отнять у пользователя. Дополнительно было рассмотрено как удалить пользователя MySQL. Если у вас остались вопросы задавайте их в комментариях!

Оставить комментарий


Кликните на изображение чтобы обновить код, если он неразборчив