使用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:
这就是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';
你可能会看到它正在使用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完成,问题成功解决。
相关主题 |