如何修复MariaDB插件’unix_socket’未加载错误
错误“ Plugin’unix_socket’未加载”在Ubuntu 15.04 / 15.10 / 16.04和任何衍生发行版(例如Linux Mint 18)上很常见。
什么是Unix_Socket插件?
MariaDB 5.2.0首先支持Unix_Socket身份验证插件,该插件允许用户使用OS凭据通过Unix套接字连接到MariaDB。 默认情况下未安装此插件。
登录到MariaDB监视器。
mysql -u root -p
然后使用以下命令安装Unix_Socket插件:
MariaDB [(none)]> install plugin unix_socket soname 'auth_socket';
我的Ubuntu系统有一个名为 linuxbabe
,所以我创建了一个MariaDB用户 linuxbabe
通过unix_socket插件标识。
MariaDB [(none)]> create user linuxbabe identified via unix_socket;
退出MariaDB监视器。
MariaDB [(none)]> quit
现在,我可以以用户linuxbabe的身份登录MariaDB监视器,而无需输入密码,因为我已经以linuxbabe的身份登录Ubuntu系统。
这就是Unix_Socket身份验证插件的工作方式。
修复未加载插件“ unix_socket”的错误
Unix_Socket身份验证插件仅在Linux OS和MariaDB具有相同用户名的用户帐户时有效。
您的Linux操作系统具有root用户。 MariaDB也有一个root用户。 因此,有时,当您尝试以root用户身份登录MariaDB监视器时,MariaDB可能会通过Unix_Socket插件对您进行身份验证,但默认情况下未安装此插件。 所以你看 Plugin 'unix_socket' is not loaded
错误。
另一个身份验证插件是 mysql_native_password
。 MariaDB使用此插件来验证使用以下命令创建的用户:
create user [email protected] identified by password 'secret_password';
要解决以上错误,我们可以告诉MariaDB使用 mysql_native_password
用于验证root用户的插件。
首先停止MariaDB。 如果您已经从Ubuntu存储库安装了MariaDB,请使用此命令将其停止。
sudo systemctl stop mysql
如果已从MariaDB存储库安装了MariaDB,请使用以下命令将其停止。
sudo systemctl stop mariadb
然后使用以下命令启动MariaDB --skip-grant-tables
选项绕过用户身份验证。
sudo mysqld_safe --skip-grant-tables &
接下来,以root用户身份登录MariaDB监视器。
mysql -u root
输入以下SQL语句以检查哪个身份验证插件用于root。
MariaDB [(none)]> select Host,User,plugin from mysql.user where User="root";
您可能会看到它正在使用unix_socket插件。 要将其更改为mysql_native_password插件,请执行以下命令:
MariaDB [(none)]> update mysql.user set plugin='mysql_native_password';
如果您忘记了MariaDB超级用户密码,也可以使用以下命令立即更改超级用户密码:
MariaDB [(none)]> update mysql.user set password=PASSWORD("newpassword") where User="root";
退出MariaDB监视器。
flush privileges; quit;
停止mysqld_safe
sudo kill -9 $(pgrep mysql)
再次启动MariaDB。
sudo systemctl start mysql or sudo systemctl start mariadb
现在您可以使用普通密码登录了。
mysql -u root -p
我希望本文能帮助您修复“ unix_socket”插件未加载错误。 总是欢迎提出意见,问题或建议。 如果您发现这篇文章有用, 请在社交媒体上与您的朋友分享! 请继续关注更多教程。