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

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

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

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

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

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

SELECT user, host FROM mysql.user;

8f1bV55iL+1ywAAAAASUVORK5CYII=

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

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

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

mysql -u alex -p

3DILRfg4f8EzblbbZvVGLMAAAAASUVORK5CYII=

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

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

SHOW GRANTS;

SHOW GRANTS FOR CURRENT_USER;

SHOW GRANTS FOR CURRENT_USER();

6ML7ZXcYNLFWvniYGvXc+f8B2OhLPmT7moUAAAAASUVORK5CYII=

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

SHOW GRANTS FOR 'alex'@'localhost';

eqSJpuPnoO4Ceygr79CnnTuJRWVg+2m2fcPm43+WSPsih8HXbBCn3l0FiRy2fCXsyj0botkawZZ4yYDpby2hv8Maz045fiytfX0WdpY4POWD5284VO17ZX7zNX8TmOtKJmRril4DJE7RxSCV1mrMeKndqpq5gtLM8VeKDdp+dbv8H0FiEY9kNEacAAAAASUVORK5CYII=

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

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

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

REVOKE UPDATE, INSERT ON MyGuests FROM 'alex'@'%';

8Bki7z0e0D+2AAAAAASUVORK5CYII=

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

REVOKE ALL ON test_db FROM 'alex'@'%';

9VLAehDIcmtgAAAABJRU5ErkJggg==

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

ERROR 1147 (42000): There is no such grant defined for user 'alex' on host '%' on table 'MyGuests'

mN5I957wa5E8PSFND3wtnimbDDjhQul5v8BHU4+SQSoBwsAAAAASUVORK5CYII=

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

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

DROP USER alex;

F4BwAAAAASUVORK5CYII=

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

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

SHOW PROCESSLIST;

FOqugU9AVLoAAAAASUVORK5CYII=

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

KILL 16;

+f8BVnreDXrvoIAAAAAASUVORK5CYII=

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

0DvBwAAAABJRU5ErkJggg==

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

DROP USER alex;

F4BwAAAAASUVORK5CYII=

Выводы

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


Creative Commons License
Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна.

Оцените статью:

Загрузка…

Источник: https://losst.ru/
Материал распространяется под лицензией CC-BY-SA

EnglishRussian