首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >插件失败: MySQL "ERROR 1524 (HY000):未加载插件'auth_socket‘“

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

Stack Overflow用户
提问于 2016-06-17 18:36:19
回答 9查看 242.7K关注 0票数 157

我的本地环境是:

  • fresh Ubuntu 16.04
  • ,带PHP7
  • ,已安装MySQL 5.7

sudo apt-get install mysql-common mysql-server

当我尝试登录MySQL时(通过命令行界面):

代码语言:javascript
复制
mysql -u root -p

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

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

代码语言:javascript
复制
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'

解决方案:重新启动PC。

这导致了另一个错误:

2)访问被拒绝

代码语言:javascript
复制
ERROR 1698 (28000): Access denied for user 'root'@'localhost'.

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

解决方案: .

有了正确的密码和工作套接字,就会出现最后一个错误。

3)认证插件不正确

代码语言:javascript
复制
mysql "ERROR 1524 (HY000): Plugin 'unix_socket' is not loaded"

在这里,我停了下来,或者不知何故又回到了1)。

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2016-06-17 18:36:19

我有办法了!

在步骤2)中重置超级用户密码时,还要将身份验证插件更改为 mysql_native_password**:**

代码语言:javascript
复制
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命令

代码语言:javascript
复制
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

代码语言:javascript
复制
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命令

代码语言:javascript
复制
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.套接字问题(来自您的评论)

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

代码语言:javascript
复制
sudo mkdir -p /var/run/mysqld; sudo chown mysql /var/run/mysqld
sudo mysqld_safe --skip-grant-tables &

(感谢@Cerin)

代码语言:javascript
复制
mkdir -p /var/run/mysqld && chown mysql:mysql /var/run/mysqld  

(感谢@Peter Dvukhrechensky)

盲路和可能的边缘误差

使用127.0.0.1代替localhost

代码语言:javascript
复制
mysql -uroot # "-hlocalhost" is default

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

代码语言:javascript
复制
mysql -uroot -h127.0.0.1

效果更好。

跳过套接字问题

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

跳过my.cnf文件

这个问题也不存在。如果您不确定,可以使用this might help you

票数 426
EN

Stack Overflow用户

发布于 2018-09-14 07:18:35

你可以像下面这样尝试,它对我很有效。

启动服务器:

代码语言:javascript
复制
sudo service mysql start

现在,转到sock文件夹:

代码语言:javascript
复制
cd /var/run

把袜子倒回去:

代码语言:javascript
复制
sudo cp -rp ./mysqld ./mysqld.bak

停止服务器:

代码语言:javascript
复制
sudo service mysql stop

恢复袜子:

代码语言:javascript
复制
sudo mv ./mysqld.bak ./mysqld

启动mysqld_safe:

代码语言:javascript
复制
 sudo mysqld_safe --skip-grant-tables --skip-networking &

初始化mysql shell:

代码语言:javascript
复制
 mysql -u root

更改密码:

因此,首先选择数据库

代码语言:javascript
复制
mysql> use mysql;

现在输入以下两个查询:

代码语言:javascript
复制
mysql> update user set authentication_string=password('123456') where user='root';
mysql> update user set plugin="mysql_native_password" where User='root'; 

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

代码语言:javascript
复制
mysql> flush privileges;
mysql> quit;

用于检查:

代码语言:javascript
复制
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

票数 59
EN

Stack Overflow用户

发布于 2019-01-07 18:11:41

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

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

您可以通过编辑[mysqld]配置来实现,如下所示:

代码语言:javascript
复制
[mysqld]
plugin-load-add = auth_socket.so

根据发行版的不同,配置文件通常位于/etc/mysql//usr/local/etc/mysql/

票数 19
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37879448

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档