Как устранить проблему с сообщением «Плагин ‘unix_socket’ не активирован» в MariaDB

Сообщение об ошибке «Плагин ‘unix_socket’ не загружен» часто возникает в версиях Ubuntu 15.04, 15.10 и 16.04, а также в производных дистрибутивах, таких как Linux Mint 18. В этом руководстве будет описан процесс устранения данной проблемы.

Что представляет собой плагин Unix_Socket?

Плагин аутентификации Unix_Socket, обеспечивающий возможность подключения пользователей к MariaDB через Unix-сокет с использованием учетных данных операционной системы, впервые появился в версии MariaDB 5.2.0. Однако этот плагин не активирован автоматически.

Откройте интерфейс мониторинга MariaDB.

mysql - u root - p

После этого установите плагин Unix_Socket, выполнив следующую команду:

MariaDB [(none)]> install plugin unix_socket soname 'auth_socket';

В моей системе Ubuntu существует пользователь с именем linuxbabe, поэтому я создаю пользователя MariaDB с тем же именем, используя плагин unix_socket для его идентификации.

Читайте также:  Настройка улучшенного отображения шрифтов в Debian 8 путем установки Infinality и использования шрифтов Ubuntu

MariaDB [(none)]> create user linuxbabe identified via unix_socket;

Выйдите из интерфейса MariaDB.

MariaDB [(none)]> quit

Теперь я имею возможность войти в монитор MariaDB под пользователем linuxbabe без необходимости вводить пароль, так как уже авторизовался в системе Ubuntu как linuxbabe.

Вот принцип работы плагина аутентификации Unix_Socket.

Решение проблемы с ошибкой «Не удается загрузить плагин ‘unix_socket’»

Плагин аутентификации Unix_Socket функционирует исключительно в том случае, если в вашей операционной системе Linux и в MariaDB существует учетная запись с идентичным именем пользователя.

В вашей операционной системе Linux существует пользователь root, и в MariaDB тоже имеется аналогичный пользователь. Иногда, когда вы пытаетесь войти в монитор MariaDB под именем пользователя root, система может использовать плагин Unix_Socket для аутентификации. Однако этот плагин не включен по умолчанию, что и приводит к ошибке «Плагин ‘unix_socket’ не загружен».

Читайте также:  Релиз ядра Linux 3.3. Обзор новшеств

Другим методом аутентификации является mysql_native_password. Этот плагин применяется в MariaDB для проверки пользователей, создаваемых с помощью следующей команды:

create user demo_user@localhost identified by password 'secret_password';

Чтобы устранить упомянутую ошибку, можно настроить MariaDB на использование плагина mysql_native_password для аутентификации пользователя root.

Сначала приостановите работу MariaDB. Если вы установили MariaDB из репозитория Ubuntu, выполните следующую команду для его остановки.

sudo systemctl stop mysql

Если вы установили MariaDB из официального репозитория, для остановки сервиса выполните следующую команду.

sudo systemctl stop mariadb

После этого активируйте MariaDB с опцией —skip-grant-tables, которая игнорирует проверку пользователя.

sudo mysqld_safe --skip-grant-tables &

Затем авторизуйтесь в консоли MariaDB под учетной записью root.

mysql - u root

Введите следующий SQL-запрос, чтобы узнать, какой плагин аутентификации применен для пользователя root.

Читайте также:  Преобразите OpenSUSE: установите приложение для смены обоев Variety

MariaDB [(none)]> select Host, User, plugin from mysql. user where User='root';

Можно заметить, что применяется плагин unix_socket. Чтобы заменить его на плагин mysql_native_password, выполните следующую команду:

MariaDB [(none)]>Обновите пользователя MySQL, установив для него плагин 'mysql_native_password'.

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

MariaDB [(none)]>Обновите таблицу mysql. user, установив пароль с помощью команды PASSWORD("newpassword") where User='root';

Выйдите из интерфейса MariaDB.

flush privileges; quit;

sudo kill -9 $(pgrep mysql)

Снова активируйте MariaDB.

sudo systemctl start mysql or sudo systemctl start mariadb

Теперь вы можете входить, используя привычный пароль.

mysql - u root - p

Надеюсь, данный материал оказался полезным в решении проблемы с ошибкой «Плагин ‘unix_socket’ не загружен». Буду рад вашим комментариям, вопросам и предложениям. Если вы считаете этот пост ценным, не стесняйтесь поделиться им с друзьями в соцсетях! Следите за нами, чтобы не пропустить новые уроки.