MySQL 失败: MySQL“ ERROR 1524(HY000) : 插件‘ auth _ socket’未加载”

我所处的环境是:

  • 最新的 Ubuntu 16.04
  • 使用 PHP7
  • 安装了 MySQL 5.7

    sudo apt-get install mysql-common mysql-server
    

When I tried to login to MySQL (via CLI):

mysql -u root -p

我遇到了一个循环问题,有三个步骤。

1)首先是一些插座问题

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'

解决方案: 重新启动电脑。

这导致了另一个错误:

2)拒绝进入

ERROR 1698 (28000): Access denied for user 'root'@'localhost'.

可能的问题? 错误的“根”用户密码!

解决方案: 使用本教程重置 root 密码

如果有正确的密码和工作插座,就会出现最后一个错误。

3)错误的授权插件

mysql "ERROR 1524 (HY000): Plugin 'unix_socket' is not loaded"

在这里,我停了下来,或者不知怎么又到了这里。

285063 次浏览

我有办法了!

在步骤2重置 root 密码时,还要将 auth 插件更改为 mysql_native_password:

use mysql;
update user set authentication_string=PASSWORD("") where User='root';
update user set plugin="mysql_native_password" where User='root';  # THIS LINE


flush privileges;
quit;

这使我成功登录!


完全代码解决方案

首先,运行这些 bash 命令

sudo /etc/init.d/mysql stop # stop mysql service
sudo mysqld_safe --skip-grant-tables & # start mysql without password
# enter -> go
mysql -uroot # connect to mysql

然后运行 mysql command = > 将其手动粘贴到 CLI

use mysql; # use mysql table
update user set authentication_string=PASSWORD("") where User='root'; # update password to nothing
update user set plugin="mysql_native_password" where User='root'; # set password resolving to default mechanism for root user


flush privileges;
quit;

3. 运行更多 bash 命令

sudo /etc/init.d/mysql stop
sudo /etc/init.d/mysql start # reset mysql
# try login to database, just press enter at password prompt because your password is now blank
mysql -u root -p

4. 插座问题(来自您的评论)

当你看到一个 插座错误时,一个社区提供了两种可能的解决方案:

sudo mkdir -p /var/run/mysqld; sudo chown mysql /var/run/mysqld
sudo mysqld_safe --skip-grant-tables &

(感谢@Cerin)

或者

mkdir -p /var/run/mysqld && chown mysql:mysql /var/run/mysqld

(感谢@Peter Dvukhrechensky)


盲路径和可能的边缘误差

使用127.0.0.1代替 localhost

mysql -uroot # "-hlocalhost" is default

可能导致“丢失文件”或 slt 错误。

mysql -uroot -h127.0.0.1

效果更好。

跳过套接字问题

我已经找到了许多方法来创建 mysqld.sock文件,更改访问权限,或符号链接它。这根本不是问题所在。

跳过 my.cnf文件

问题也不存在。如果你不确定,这个也许能帮到你

你可以尝试以下步骤:

停止 Mysql 服务1 sudo /etc/init.d/mysql stop

作为 root 用户登录,不需要密码 sudo mysqld_safe --skip-grant-tables &

登录 mysql 终端后,您应该需要更多的执行命令:

use mysql;


UPDATE mysql.user SET authentication_string=PASSWORD('solutionclub3@*^G'), plugin='mysql_native_password' WHERE User='root';


flush privileges;


sudo mysqladmin -u root -p -S /var/run/mysqld/mysqld.sock shutdown

重新启动 mysql 服务器之后 如果你仍然面临错误,你必须访问: 重置 MySQL 5.7 root 密码 Ubuntu 16.04

试试看: Sudo mysql _ security _ install

工作在 Ubuntu 18.04中

你可以试试下面的方法,对我很有效。

启动服务器:

sudo service mysql start

现在,进入袜子文件夹:

cd /var/run

把袜子往后退:

sudo cp -rp ./mysqld ./mysqld.bak

停止服务器:

sudo service mysql stop

还原袜子:

sudo mv ./mysqld.bak ./mysqld

启动 mysqld _ safe:

 sudo mysqld_safe --skip-grant-tables --skip-networking &

初始化 mysql shell:

 mysql -u root

更改密码:

因此,首先选择数据库

mysql> use mysql;

现在输入以下两个查询:

mysql> update user set authentication_string=password('123456') where user='root';
mysql> update user set plugin="mysql_native_password" where User='root';

现在,一切都会好起来的。

mysql> flush privileges;
mysql> quit;

检查:

mysql -u root -p

搞定!

N.B, After login please change the password again from phpmyadmin

现在检查 hostname/phpmyadmin

Username: root

Password: 123456

详情请查询 如何在 Ubuntu 中重置遗忘的密码 phpmyadmin

默认情况下,mysql命令使用 UNIX 套接字连接到 MySQL。

If you're using MariaDB, you need to load the Unix Socket 身份验证插件 on the server side.

你可以这样编辑 [mysqld]配置:

[mysqld]
plugin-load-add = auth_socket.so

根据分布情况,配置文件通常位于 /etc/mysql//usr/local/etc/mysql/

如果在同一节中设置了 unix_socket=OFF,则通过将其更改为 unix_socket=ON来启用它,否则此修复不适用。

对于 Ubuntu 18.04和 mysql 5.7

  • 步骤1: sudo mkdir /var/run/mysqld;

    第二步: sudo chown mysql /var/run/mysqld

    步骤3: sudo mysqld_safe --skip-grant-tables及退出(如属于 卡住了

不用密码登录 mysql

  • 第四步: sudo mysql --user=root mysql

    第五步: SELECT user,authentication_string,plugin,host FROM mysql.user;

    步骤6: < code > ALTER USER‘ root’@‘ localhost’IDENTIED WITH Mysql _ national _ password BY‘ root’

现在用

  • mysql -u root -p <root>

你可以试试下面的命令:

hduser@master:~$ sudo /etc/init.d/mysql stop
[ ok ] Stopping mysql (via systemctl): mysql.service.
hduser@master:~$ sudo /etc/init.d/mysql start
[ ok ] Starting mysql (via systemctl): mysql.service.

以防有人在犯了和我一样的错误后来到这里:

  1. 暂时切换到 plugin="mysql_native_password"执行我的任务。
  2. 试图切换回“ auth _ socket”插件,但是错误地将其引用为 plugin="auth_socket",导致了 mysql "ERROR 1524 (HY000): Plugin 'auth_socket' is not loaded"
  3. 由于无法登录来修复这个错误,我不得不停止 mysql 并使用 mysql_safe绕过身份验证,以便切换到适当的插件 plugin="unix_socket"

如果有人收到了原始发布者的错误信息,希望这样可以节省一些时间,但真正的原因是插件名称有问题,实际上并不缺少“ auth _ socket”插件本身的存在,根据 MariaDB 文档:

在 MariaDB 10.4.3及更高版本中,默认情况下安装 unix _ socket 身份验证插件,默认情况下由‘ root’@‘ localhost’用户帐户使用。

我试过了,很管用

use mysql; # use mysql table
update user set authentication_string="" where User='root';


flush privileges;
quit;

这个可能有用

创建由‘ pwd’标识的用户‘ USER’@‘ localhost’;

用户‘ root’@‘ localhost’标识为‘ MyNewPass’;