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

时间:2016-06-17 10:36:19

标签: mysql linux ubuntu auth-socket

我的当地环境是:

  • 新鲜的Ubuntu 16.04
  • 使用PHP 7
  • 已安装MySQL 5.7

    sudo apt-get install mysql-common mysql-server
    

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

mysql -u root -p

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

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"的密码错误用户!

解决方案:reset root password with this tutorial

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

3)auth插件不正确

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

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

10 个答案:

答案 0 :(得分:251)

我有一个解决方案!

在步骤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;

这使我能够成功登录!

完整代码解决方案

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

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;

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

可能导致"丢失文件"或者是错误。

mysql -uroot -h127.0.0.1

效果更好。

跳过套接字问题

我找到了很多方法来创建mysqld.sock文件,更改访问权限或符号链接。毕竟这不是问题。

跳过my.cnf文件

问题也不存在。如果您不确定,this might help you

答案 1 :(得分:19)

您可以尝试以下方法对我有用。

启动服务器:

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

有关更多详细信息,请检查How to reset forgotten password phpmyadmin in Ubuntu

答案 2 :(得分:8)

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

停止Mysql Service 1st 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服务器后 如果您仍然遇到错误,则必须访问:Reset MySQL 5.7 root password Ubuntu 16.04

答案 3 :(得分:6)

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

如果您使用的是MariaDB,则需要在服务器端加载Unix Socket Authentication Plugin

您可以通过编辑[mysqld]的配置来做到这一点:

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

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

答案 4 :(得分:4)

对于Ubuntu 18.04和mysql 5.7

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

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

    第3步: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 BY'root'

现在使用

登录
  • mysql -u根-p

答案 5 :(得分:1)

万一我犯了同样的错误而落在这里,那么

  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 documentation

  

在MariaDB 10.4.3和更高版本中,默认情况下安装了unix_socket身份验证插件,默认情况下,该文件夹由'root'@'localhost'用户帐户使用。

答案 6 :(得分:0)

尝试一下: sudo mysql_secure_installation

在Ubuntu 18.04中工作

答案 7 :(得分:0)

我尝试过,并且可以工作

parent

答案 8 :(得分:-1)

这可能有效

CREATE USER 'user'@'localhost' IDENTIFIED BY 'pwd';

ALTER USER 'root'@'localhost' 由 'MyNewPass' 识别;

答案 9 :(得分:-4)

您可以尝试使用以下命令:

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.