MySQL失败:mysql“错误1524(HY000):插件'auth_socket'未加载”
Posted
技术标签:
【中文标题】MySQL失败:mysql“错误1524(HY000):插件\'auth_socket\'未加载”【英文标题】:MySQL fails on: mysql "ERROR 1524 (HY000): Plugin 'auth_socket' is not loaded"MySQL失败:mysql“错误1524(HY000):插件'auth_socket'未加载” 【发布时间】:2016-10-19 03:59:53 【问题描述】:我的本地环境是:
全新 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)。
【问题讨论】:
很高兴它对您有好处 :) 感谢您与我们联系! 【参考方案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 命令
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。套接字问题(来自您的 cmets)
当您看到 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
文件、更改访问权限或对其进行符号链接的方法。毕竟这不是问题。
跳过my.cnf
文件
问题也不存在。如果您不确定,this might help you。
【讨论】:
谢谢你。这也是关于如何重置 mysql root pass 的一个很好的答案,因此您可能需要稍微编辑标题以帮助它在我们遇到套接字问题之前出现。 我很高兴它有帮助。您将如何编辑标题以保留原始消息?我了解该解决方案需要重置密码,但它不能解决标题中的问题。这是更复杂的故障点。对于root密码重置,我会去这里:***.com/a/6401963/1348344 @matanster 并非如此,这是纯粹的逐步试验失败构造。你用什么操作系统? 您的 mysqld_safe 调用不正确。您需要改为运行:sudo mkdir -p /var/run/mysqld; sudo chown mysql /var/run/mysqld; sudo mysqld_safe --skip-grant-tables &
请在答案中添加套接字问题的可能解决方案。喜欢这个mkdir -p /var/run/mysqld && chown mysql:mysql /var/run/mysqld
它可能会节省一些人的时间【参考方案2】:
您可以尝试以下步骤:
第一次停止Mysql服务
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】:试试看: sudo mysql_secure_installation
在 Ubuntu 18.04 中工作
【讨论】:
【参考方案4】:你可以尝试如下它对我有用。
启动服务器:
sudo service mysql start
现在,转到 sock 文件夹:
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
【讨论】:
只有这个对我有用!备份和恢复套接字非常聪明 ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES) before the "done!"尝试使用 123456 登录时填写您的答案。 我解决了在 phpmyadmin 中执行描述的步骤(即更改密码,更改插件)。由于某种原因,'set authentication_string=password(...)' 使它停止工作(错误 1045 (28000): Access denied...)。 虽然这是一个解决方案,但每当我重新启动计算机(ubuntu 20.04)时,我都必须运行所有这些命令。有什么永久的解决办法吗?【参考方案5】:mysql
命令默认使用 UNIX 套接字连接到 MySQL。
如果您使用的是 MariaDB,则需要在服务器端加载 Unix Socket Authentication Plugin。
您可以像这样编辑[mysqld]
配置来做到这一点:
[mysqld]
plugin-load-add = auth_socket.so
根据分布,配置文件通常位于/etc/mysql/
或/usr/local/etc/mysql/
【讨论】:
这个。所有其他答案都解释了如何解决该错误。这个解释了如何解决它。 如果您使用的是 MariaDB 10.4.3 及更高版本,则应默认安装 unix_socket 身份验证插件,但如果您错误地将其引用为 plugin="auth_socket",而不是 plugin="unix_socket"更新您的“用户”时,您会收到这条有些误导性的消息。我的回答详细说明了我是如何搞砸的。【参考方案6】:适用于 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(如果它
卡住)
不用密码登录mysql
第四步:sudo mysql --user=root mysql
第 5 步:SELECT user,authentication_string,plugin,host FROM mysql.user;
第 6 步:ALTER USER 'root'@'localhost' IDENTIFIED WITH
mysql_native_password BY 'root'
现在用
登录mysql -u root -p <root>
【讨论】:
但是我可以在哪一步设置root的通行证?因为我尝试了$ mysql -u root -p
,但访问被拒绝。 Access denied for user 'root'@'localhost' (using password: YES)
我尝试输入“YES”密码【参考方案7】:
你可以试试下面的命令:
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.
【讨论】:
你能进一步解释一下吗?重启服务器如何解决给定的错误信息?【参考方案8】:万一有人在犯了同样的错误后来到这里:
-
暂时切换到
plugin="mysql_native_password"
。完成了我的任务。
尝试切换回“auth_socket”插件,但错误地将其引用为plugin="auth_socket"
,导致mysql "ERROR 1524 (HY000): Plugin 'auth_socket' is not loaded"
由于缺少登录方式来修复这个错误,我不得不停止mysql并使用mysql_safe
绕过身份验证,以便切换到适当的插件plugin="unix_socket"
希望如果他们收到原始发布者的错误消息,这可以节省一些时间,但真正的原因是插件名称模糊,实际上并不缺少“auth_socket”插件本身的存在,根据MariaDB documentation:
在MariaDB 10.4.3及以后版本,默认安装unix_socket认证插件,默认为'root'@'localhost'用户帐号使用。
【讨论】:
【参考方案9】:我试过了,效果很好
use mysql; # use mysql table
update user set authentication_string="" where User='root';
flush privileges;
quit;
【讨论】:
这对我来说适用于 ubuntu 20.04+ 的 mysql 版本 8.0.22。 This 表示PASSWORD()
函数已从 mysql 8.0 中删除。【参考方案10】:
这可能有效
CREATE USER 'user'@'localhost' IDENTIFIED BY 'pwd';
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';
【讨论】:
以上是关于MySQL失败:mysql“错误1524(HY000):插件'auth_socket'未加载”的主要内容,如果未能解决你的问题,请参考以下文章