云网牛站
所在位置:首页 > Linux云数据库 > 修复MariaDB出现Plugin ‘unix_socket’ is not loaded Error的方法

修复MariaDB出现Plugin ‘unix_socket’ is not loaded Error的方法

2019-03-03 11:32:28作者:戴进稿源:云网牛站

使用Ubuntu 18.04或Ubuntu 16.04的Linux版本安装MariaDB时常会出现Plugin ‘unix_socket’ is not loaded Error的错误,以下提供修复解决的方法。MariaDB安装过程请参考在Ubuntu 18.04/18.10系统上安装MariaDB 10.3.13稳定版本一文。

 

什么是Unix_Socket插件?

在MariaDB 5.2.0中首次支持Unix_Socket认证插件,该插件允许用户使用操作系统凭证通过Unix套接字连接到MariaDB,默认情况下不安装此插件。

登录MariaDB监视器:

mysql -u root -p

然后使用以下命令安装Unix_Socket插件:

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

我的Ubuntu系统有一个名为ywnz的用户,因此我创建了一个通过unix_socket插件识别的MariaDB用户ywnz:

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

退出MariaDB监视器:

MariaDB [(none)]> quit

现在我可以在没有输入密码的情况下以用户ywnz登录MariaDB监视器,因为我已经登录到Ubuntu系统作为ywnz:

修复MariaDB出现Plugin ‘unix_socket’ is not loaded Error的方法

这就是Unix_Socket认证插件的工作原理。

 

修复Plugin ‘unix_socket’ is not loaded Error

只有当你的Linux操作系统和MariaDB具有相同用户名的用户帐户时,Unix_Socket身份验证插件才有效。

你的Linux操作系统有root用户,MariaDB还有一个root用户,因此,有时,当你尝试以root用户身份登录MariaDB监视器时,MariaDB可能会通过Unix_Socket插件对你进行身份验证,但默认情况下不会安装此插件,所以你看到插件'unix_socket'未加载错误(Plugin ‘unix_socket’ is not loaded Error)。

另一个身份验证插件是mysql_native_password,MariaDB使用此插件对使用此命令创建的用户进行身份验证:

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

要解决上述错误,我们可以告诉MariaDB使用mysql_native_password插件来验证root用户。

如果已从Ubuntu存储库安装MariaDB,请使用此命令将其停止:

sudo systemctl stop mysql

如果已从MariaDB存储库安装MariaDB,请使用以下命令将其停止:

sudo systemctl stop mariadb

然后使用--skip-grant-tables选项启动MariaDB,该选项绕过用户身份验证:

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';

修复MariaDB出现Plugin ‘unix_socket’ is not loaded Error的方法

你可能会看到它正在使用unix_socket插件,要将其更改为mysql_native_password插件,请执行以下命令:

MariaDB [(none)]> update mysql.user set plugin='mysql_native_password';

如果你忘记了MariaDB root用户密码,也可以使用以下命令立即更改root密码,详细请参考快速重置MariaDB或是MySQL的root密码一文:

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

或:

sudo systemctl start mariadb

现在可以使用普通密码登录了:

mysql -u root -p

至此,修复Plugin ‘unix_socket’ is not loaded error完成,问题成功解决。

 

相关主题

在Ubuntu 18.04 Server中安装LEMP的方法[Nginx、MariaDB、PHP7.2]

精选文章
热门文章