MySQL失败:mysql"ERROR 1524(HY000):插件'auth_socket'未加载"

Tom*_*uba 105 mysql linux ubuntu auth-socket

我的当地环境是:


当我尝试登录MySQL(通过CLI)时:

mysql -u root -p
Run Code Online (Sandbox Code Playgroud)

我遇到了一个包含3个步骤的循环问题.

1)首先是一些套接字问题

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

解决方案:重启PC.

这导致了另一个错误:

2)访问被拒绝

ERROR 1698 (28000): Access denied for user 'root'@'localhost'.
Run Code Online (Sandbox Code Playgroud)

可能的问题?"root"用户的密码错误!

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

使用正确的密码和工作套接字,会出现上一个错误.

3)auth插件不正确

mysql "ERROR 1524 (HY000): Plugin 'unix_socket' is not loaded"
Run Code Online (Sandbox Code Playgroud)

在这里,我停下来或以某种方式得到了1).

Tom*_*uba 308

我有一个解决方案!

在步骤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;
Run Code Online (Sandbox Code Playgroud)

这让我成功登录!


全代码解决方案

1.运行bash命令

1.首先,运行这些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
Run Code Online (Sandbox Code Playgroud)

2.然后运行mysql命令=>手动将其粘贴到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;
Run Code Online (Sandbox Code Playgroud)

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 
Run Code Online (Sandbox Code Playgroud)

4.套接字问题(来自您的评论)

当您看到套接字错误时,社区会提供两种可能的解决方案:

sudo mkdir -p /var/run/mysqld; sudo chown mysql /var/run/mysqld
sudo mysqld_safe --skip-grant-tables &
Run Code Online (Sandbox Code Playgroud)

(感谢@Cerin)

要么

mkdir -p /var/run/mysqld && chown mysql:mysql /var/run/mysqld  
Run Code Online (Sandbox Code Playgroud)

(感谢@Peter Dvukhrechensky)


盲路径和可能的边缘错误

使用127.0.0.1而不是localhost

mysql -uroot # "-hlocalhost" is default
Run Code Online (Sandbox Code Playgroud)

可能导致"丢失文件"或slt错误.

mysql -uroot -h127.0.0.1
Run Code Online (Sandbox Code Playgroud)

效果更好.

跳过套接字问题

我发现了许多创建mysqld.sock文件,更改访问权限或符号链接的方法.毕竟这不是问题.

跳过my.cnf文件

问题也不存在.如果您不确定,这可能会对您有所帮助.

  • 您的mysqld_safe调用不正确.你需要运行:`sudo mkdir -p/var/run/mysqld; sudo chown mysql/var/run/mysqld; sudo mysqld_safe --skip-grant-tables&` (7认同)
  • 这次真是万分感谢.这也是关于如何重置mysql root pass的一个很好的答案,所以你可能想要在我们遇到套接字问题之前稍微编辑标题以帮助它出现. (3认同)
  • 请在答案中添加套接字问题的可行解决方案.像这样一个`mkdir -p/var/run/mysqld && chown mysql:mysql/var/run/mysqld`它可以节省一些人的时间 (2认同)

Bab*_*med 32

你可以尝试如下它适合我.

启动服务器:

sudo service mysql start
Run Code Online (Sandbox Code Playgroud)

现在,转到sock文件夹:

cd /var/run
Run Code Online (Sandbox Code Playgroud)

备用袜子:

sudo cp -rp ./mysqld ./mysqld.bak
Run Code Online (Sandbox Code Playgroud)

停止服务器:

sudo service mysql stop
Run Code Online (Sandbox Code Playgroud)

恢复袜子:

sudo mv ./mysqld.bak ./mysqld
Run Code Online (Sandbox Code Playgroud)

启动mysqld_safe:

 sudo mysqld_safe --skip-grant-tables --skip-networking &
Run Code Online (Sandbox Code Playgroud)

init mysql shell:

 mysql -u root
Run Code Online (Sandbox Code Playgroud)

更改密码:

因此,首先选择数据库

mysql> use mysql;
Run Code Online (Sandbox Code Playgroud)

现在输入以下两个查询:

mysql> update user set authentication_string=password('123456') where user='root';
mysql> update user set plugin="mysql_native_password" where User='root'; 
Run Code Online (Sandbox Code Playgroud)

现在,一切都会好的.

mysql> flush privileges;
mysql> quit;
Run Code Online (Sandbox Code Playgroud)

用于检查:

mysql -u root -p
Run Code Online (Sandbox Code Playgroud)

完成了!

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

现在检查 hostname/phpmyadmin

Username: root

Password: 123456

有关更多详细信息,请查看如何在Ubuntu中重置忘记密码phpmyadmin

  • 只有这个对我有用!备份和还原套接字非常聪明 (2认同)

小智 8

您可以尝试以下几个步骤:

停止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
Run Code Online (Sandbox Code Playgroud)

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


rus*_*tyx 7

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

如果您使用的是MariaDB,则需要在服务器端加载Unix套接字身份验证插件

您可以通过编辑如下[mysqld]配置来完成:

[mysqld]
plugin-load-add = auth_socket.so
Run Code Online (Sandbox Code Playgroud)

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

  • 这个。所有其他答案都解释了如何解决该错误。这个解释了如何解决它。 (2认同)

Gor*_*cer 6

试试看:sudo mysql_secure_installation

在 Ubuntu 18.04 中工作


小智 6

对于Ubuntu 18.04和mysql 5.7

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

    步骤2:sudo chown mysql / var / run / mysqld

    第三步:sudo mysqld_safe --skip-grant-tables&quit(如果被卡住则使用quit)

登录到MySQL没有密码

  • 步骤4:sudo mysql --user = root mysql

    步骤5:从mysql.user中选择用户,身份验证字符串,插件,主机;

    步骤6:ALTER USER'root'@'localhost'由mysql_native_password标识,由'root'

现在登录

  • mysql -u root -p

  • 但我可以在哪一步设置 root 的通行证?因为我尝试了``$ mysql -u root -p```但访问被拒绝。```用户'root'@'localhost'访问被拒绝(使用密码:YES)```我尝试输入'YES'密码 (2认同)

Roh*_*ams 5

万一有人在犯了同样的错误后登陆这里:

  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' 用户帐户使用。


小智 5

我尝试过并且有效

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

flush privileges;
quit;
Run Code Online (Sandbox Code Playgroud)