1045错误主因是认证链中断,非单纯密码错误;需检查host匹配(localhost vs 127.0.0.1)、认证插件兼容性(如caching_sha2_password需切mysql_native_password)、正确使用alter user修改密码,且skip_grant_tables必须置于[mysqld]段并彻底重启服务。

1045 错误不是密码输错了就重装,而是 MySQL 认证链断在了某个环节——可能是插件不匹配、Host 不对、或者 password 字段已废弃。
MySQL 8.0+ 必须用 ALTER USER 改密码,UPDATE user SET password=... 会静默失败
MySQL 5.7 起 password 字段被弃用,8.0+ 完全移除;authentication_string 才是真实密码字段。但直接 UPDATE 仍不行,因为认证插件(如 caching_sha2_password)要求显式声明。
- 错误写法:
UPDATE user SET authentication_string = PASSWORD('123') WHERE user = 'root';(PASSWORD() 函数已弃用,且不触发插件逻辑) - 正确写法:
ALTER USER 'root'@'localhost' IDENTIFIED BY '123'; - 如果提示插件不兼容(比如 Navicat 连不上),强制切回旧插件:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123';
skip_grant_tables 只能加在 [mysqld] 段,加错位置等于没加
phpEnv 是 Windows 环境,配置文件是 my.ini;常见坑是把 skip_grant_tables 写进 [client] 或 [mysql] 节——这些节控制客户端行为,不影响服务端鉴权逻辑。
- 必须定位到
[mysqld]段(注意不是[mysqld_safe]),在其下方另起一行写:skip_grant_tables - 改完要彻底重启 MySQL 服务:
net stop phpenv-mysql && net start phpenv-mysql(仅重启 phpEnv 主程序不生效) - 进入 MySQL 后第一件事是
FLUSH PRIVILEGES;,否则新权限不加载
phpEnv 默认 root 用户只允许 'root'@'127.0.0.1',不是 'root'@'localhost'
MySQL 把 localhost 和 127.0.0.1 当作两个不同 Host:前者走 socket 连接,后者走 TCP。phpEnv 的 MySQL 配置常默认绑定 127.0.0.1,所以你连的是 'root'@'127.0.0.1',而密码可能只设在 'root'@'localhost' 上。
- 查清楚到底哪个用户在生效:
SELECT host,user,plugin FROM mysql.user WHERE user='root'; - 如果只有
'root'@'localhost'有密码,但连接走的是127.0.0.1,就必然报 1045 - 统一方案:
CREATE USER 'root'@'127.0.0.1' IDENTIFIED BY 'yourpass'; GRANT ALL ON *.* TO 'root'@'127.0.0.1' WITH GRANT OPTION;
Navicat / phpEnv 控制台连不上,先确认 using password: YES/NO 的真实含义
错误信息末尾的 (using password: NO) 不代表你没输密码,而是客户端根本没传——常见于 phpEnv 自带的 MySQL 客户端未配置默认密码,或 Navicat 连接设置里“保存密码”被禁用。
-
using password: NO→ 检查 Navicat 连接配置页,“密码”框是否为空,或勾选了“使用空密码” -
using password: YES→ 密码已传,但校验失败,重点查插件和 Host 匹配 - 临时验证:命令行用
mysql -h 127.0.0.1 -u root -p显式指定 host,比不带-h更贴近实际连接场景
真正卡住人的地方,往往不是不会操作,而是没意识到 'root'@'localhost' 和 'root'@'127.0.0.1' 是两个独立账户,也没留意 phpEnv 的 my.ini 里 bind-address 默认值是 127.0.0.1 ——这两点不核对,重置十次密码都没用。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











