MacOS下MySQL ERROR 1524: mysql_old_password插件未加载问题求助
问题描述
为解决其他问题执行了以下命令:
mysql> UPDATE mysql.user SET plugin = 'mysql_old_password' mysql> WHERE User = 'some_user' AND Host = 'some_host'; mysql> FLUSH PRIVILEGES; mysql> SET PASSWORD FOR -> 'some_user'@'some_host' = OLD_PASSWORD('new_password');
此后无法通过mysql -u root登录MySQL,报错Plugin 'mysql_old_password' is not loaded。尝试过Homebrew重装MySQL、删除部分MySQL文件夹、参考相关帖子均未解决。
补充信息:
- MySQL版本:
8.0.30 for macOS 12.4 - 执行
sudo /usr/local/mysql/bin/mysqld_safe –skip-grant-tables报错:sudo: /usr/local/mysql/bin/mysqld_safe: command not found - 执行
sudo mysqld_safe --skip-grant-tables输出:
[1] 51759 my-username@Macbook-Pro ~ % [1] + suspended (tty output) sudo mysqld_safe --skip-grant-tables
解决方案
核心原因
MySQL 8.0已彻底移除mysql_old_password插件,设置该插件后用户登录时MySQL无法找到对应插件,导致报错。同时Homebrew安装的MySQL 8.0通常不包含mysqld_safe命令,需直接使用mysqld启动服务。
修复步骤
停止当前MySQL服务
若通过Homebrew安装:brew services stop mysql若为系统默认安装:
sudo launchctl unload -w /Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plist跳过权限表启动MySQL
执行以下命令启动MySQL,跳过权限验证和网络连接(避免外部干扰):sudo mysqld --skip-grant-tables --skip-networking &无密码登录MySQL
直接执行命令登录,无需输入密码:mysql -u root重置root用户的认证插件和密码
进入MySQL命令行后,依次执行:USE mysql; -- 方案1:使用MySQL 8.0默认的caching_sha2_password插件(推荐) UPDATE user SET plugin = 'caching_sha2_password', authentication_string = SHA2('你的新密码', 256) WHERE User = 'root' AND Host = 'localhost'; -- 方案2:使用兼容旧客户端的mysql_native_password插件 -- UPDATE user SET plugin = 'mysql_native_password', authentication_string = PASSWORD('你的新密码') WHERE User = 'root' AND Host = 'localhost'; FLUSH PRIVILEGES; EXIT;注意:将
你的新密码替换为实际要设置的密码,二选一执行即可。重启MySQL服务
Homebrew安装的情况:brew services start mysql系统默认安装的情况:
sudo launchctl load -w /Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plist测试登录
执行命令并输入新密码验证:mysql -u root -p
内容的提问来源于stack exchange,提问作者The Royal Guardian
相关产品推荐
相关产品推荐

