MySQL失败:mysql“错误1524(HY000):插件'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”用户密码错误!

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

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

3)不正确的身份验证插件

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

在这里,我停下来或以某种方式再次到达 1)。

原文由 Tomas Votruba 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.2k
2 个回答

我有一个解决方案!

在步骤 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 命令

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. 套接字问题(来自您的评论)

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

 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 文件

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

原文由 Tomas Votruba 发布,翻译遵循 CC BY-SA 4.0 许可协议

你可以尝试如下它对我有用。

启动服务器:

 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 外壳:

  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

原文由 Bablu Ahmed 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题