MySQL 在 : mysql "ERROR 1524 (HY000): Plugin ' auth_socket' is not loaded"上失败

标签 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) 验证插件不正确

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

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

最佳答案

我有办法了!

在步骤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 commands => 手动复制粘贴到 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。套接字问题(来自您的评论)

当您看到 socket 错误时,社区提供了 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 文件、更改访问权限或对其进行符号链接(symbolic link)。毕竟这不是问题。

跳过 my.cnf 文件

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

关于MySQL 在 : mysql "ERROR 1524 (HY000): Plugin ' auth_socket' is not loaded"上失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37879448/

相关文章:

php - XML 或 SQL - 仅频繁读取数据

java - 如何在Spring中编写一个查询,将记录插入到Mysql数据库的2个表中

mysql 查找同一个表中两行之间的差异并仅显示第二行差异而不显示第一行

c - 字符串处理 C linux 和 windows

java - Hadoop:JAVA JPS工具无法正常工作

apache - 无法理解在 ubuntu 上安装 apache2 的正确方法

php - 无法使 PHP 和 MYSQLI 的下拉提要正常工作

c - 从内部捕获 SIGSEGV 时,如何知道涉及的无效访问类型?

linux - 如何找出linux下的空闲物理内存量(在c中)

perl - 在字符串 eq 中使用未初始化的值 $e2 并找到 : warning: