MySQL 失败:mysql“错误 1524 (HY000):插件‘auth_socket’未加载”
- 2024-10-23 08:47:00
- admin 原创
- 58
问题描述:
我的本地环境是:
全新 Ubuntu 16.04
使用 PHP 7
已安装 MySQL 5.7
sudo apt-get install mysql-common mysql-server
当我尝试登录 MySQL(通过 CLI)时:
mysql -u root -p
我遇到了一个包含 3 个步骤的循环问题。
首先是一些插座问题
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'
解决方案:重新启动电脑。
这导致了另一个错误:
拒绝访问
ERROR 1698 (28000): Access denied for user 'root'@'localhost'.
可能存在问题?用户密码错误root
!
解决方案:按照本 RackSpace 教程重置 root 密码。密码正确且套接字正常工作后,会出现最后一个错误。
身份验证插件不正确
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 命令
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
可能导致“文件丢失”或 slt 错误。
mysql -uroot -h127.0.0.1
效果更好。
跳过套接字问题
我找到了很多方法来创建mysqld.sock
文件、更改访问权限或对其进行符号链接。但问题终究不是出在这里。
跳过my.cnf
文件
这个问题也不存在。如果你不确定,这可能会对你有帮助。
解决方案 2:
您可以尝试如下方法,它对我有用。
启动服务器:
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
有关更多详细信息,请查看如何在 Ubuntu 中重置忘记的 phpmyadmin 密码
解决方案 3:
该mysql
命令默认使用 UNIX 套接字连接到 MySQL。
如果您使用 MariaDB,则需要在服务器端加载Unix Socket Authentication Plugin 。
您可以通过如下方式编辑[mysqld]
配置来完成此操作:
[mysqld]
plugin-load-add = auth_socket.so
根据发行版的不同,配置文件通常位于/etc/mysql/
或/usr/local/etc/mysql/
如果unix_socket=OFF
在同一部分设置,请将其更改为以启用它unix_socket=ON
,否则此修复不适用。
解决方案 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
&退出(如果卡住则使用退出)
无需密码即可登录mysql
步骤4:
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>
解决方案 5:
您可以尝试以下步骤:
首先停止 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 服务器后,如果仍然遇到错误,则必须访问:重置 MySQL 5.7 root 密码 Ubuntu 16.04
解决方案 6:
尝试一下:
sudo mysql_secure_installation
在 Ubuntu 18.04 中工作。
解决方案 7:
以防有人犯和我一样的错误来到这里:
切换到
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 文档:
在MariaDB 10.4.3及更高版本中,默认安装unix_socket身份验证插件,并默认由'root'@'localhost'用户帐户使用。
解决方案 8:
我尝试过并且有效
use mysql; # use mysql table
update user set authentication_string="" where User='root';
flush privileges;
quit;
解决方案 9:
它对我有用(ubuntu 22.04):
1)停止并删除mysql及相关服务
sudo kill $(pgrep mysql)
sudo apt-get remove --purge mysql-*
sudo rm -rf /etc/mysql
2)下载 APT 仓库
https://dev.mysql.com/downloads/repo/apt/
3)按照指南
https://dev.mysql.com/doc/mysql-apt-repo-quick-guide/en/
指南中的候选名单:
sudo dpkg -i mysql-apt-config_0.8.24-1_all.deb
在对话框中保留原有设置
sudo apt-get update
sudo apt-get install mysql-server
它应该是一个对话框:设置 ROOT 密码并保留身份验证设置。我尝试更改它并收到身份验证错误。
最后
sudo apt-get update
sudo apt-get install mysql-workbench-community
希望它能节省你的时间,祝你好运:)
解决方案 10:
在 macOS 上。如果你不使用brew
服务,请安装
https://github.com/Homebrew/homebrew-services
停止 MySQL:
brew services stop mysql@5.7
以安全模式启动 MySQL:
mysqld_safe --skip-grant-tables &
登录MySQL:
mysql -u root
使用mysql
表格:
use mysql;
更新身份验证:
update user set authentication_string=PASSWORD('') where User='root';
update user set plugin='mysql_native_password' where User='root';
清除权限并退出
flush privileges;
quit;
重新启动 MySQL:
/usr/local/opt/mysql@5.7/bin/mysql.server stop
brew services start mysql@5.7
解决方案 11:
我没有足够的声誉点来发表评论,所以我在这里发帖。+1 投票支持 @Gorcer 关于 mysql_secure_installation 的回答。如果您尚未在服务器上运行安全安装(我没有),请先运行它。它将启用 auth_socket。它在 Ubuntu 22.04 LTS 上对我有用。
解决方案 12:
啊,我今天遇到了这个问题,卡了好久,所有方法都失败了,当时我正试图将数据库从 mysql 迁移到 MariaDB。下面是我解决问题的方法。
首先,当您从旧数据库成功更改任何用户的任何信息和设置时,就会发生这种情况,结果是 mysql 和 MariaDB 之间的身份验证方式不同。
因此,迁移后,您就有机会登录,而无需更改用户信息和设置。将 backup.sql 从 mysql 导入到 mariaDB 后,使用您的 root 访问权限执行以下操作:
USE mysql;
UPDATE mysql.user SET plugin = 'mysql_native_password';
然后尝试更改 /etc/mysql/ 中包含“[mysqld]”的 .cnf
然后在[mysqld]下添加:
plugin-load-add = auth_socket.so
经过所有这些操作后,这个问题可能会得到解决。希望它对你有用。
解决方案 13:
这可能有效
创建用户'user'@'localhost',由'pwd'标识;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';
解决方案 14:
我的 cmd 提示符显示相同的错误,并且 sql 安装命令卡住了。以下命令对我有用。
打开一个新终端。从第一个终端终止当前打开的 mysql_secure_installation,
sudo killall -9 mysql_secure_installation
启动 mysql 客户端,您将进入 sql 提示符:
sudo mysql
运行以下 SQL 查询:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'setYourPasswordHereWithinQuotes';
exit
让我们通过在 cmd 中输入来保护它:
sudo mysql_secure_installation
每当输入密码时,请使用您在上面的 SQL 查询中设置的 setYourPasswordHereWithinQuotes 密码。
完毕!
解决方案 15:
您可以尝试以下命令:
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.
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理必备:盘点2024年13款好用的项目管理软件