You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VSCode调试Node.js项目连接MySQL报1045访问被拒绝错误怎么解决?

MySQL 1045连接报错排查与解决

你遇到的ER_ACCESS_DENIED_ERROR(错误码1045)是MySQL服务端拒绝root@localhost用户登录导致的身份校验失败问题,可按照以下顺序排查:

  • 密码配置不匹配
    你代码中填写的password: '1234'和本地MySQL root用户的实际密码不一致是最高发原因。
    解决方法:
    首先在本地终端/命令行执行登录命令验证密码有效性:
    mysql -u root -p
    回车后输入1234,如果无法登录说明密码错误,按照你使用的操作系统对应的流程重置root密码,重置后将代码中的密码改为新的正确值即可。
  • root用户登录权限不足
    部分默认安装的MySQL会限制root用户的登录来源,不允许通过localhost的TCP连接访问。
    解决方法:
    手动登录MySQL后依次执行以下SQL命令:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY '你的root密码' WITH GRANT OPTION;
FLUSH PRIVILEGES;

执行完成后重试Node.js项目的数据库连接。

  • MySQL 8.0+加密插件不兼容
    你使用的mysql@2.18.1驱动对MySQL 8.0及以上版本默认的caching_sha2_password密码加密方式兼容性较差,即使密码正确也会触发鉴权失败报错。
    解决方法(二选一即可):
  1. 更换兼容更好的驱动:执行命令npm uninstall mysql && npm install mysql2,将index.js中const mysql = require('mysql');改为const mysql = require('mysql2');,其余连接代码无需修改。
  2. 修改root用户加密规则:手动登录MySQL后依次执行以下SQL命令:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的root密码';
FLUSH PRIVILEGES;
  • MySQL端口配置错误
    如果你的本地MySQL服务修改了默认端口(非3306),代码中未指定正确端口也会触发连接失败。
    解决方法:
    在mysql.createConnection的配置项中添加对应的端口参数,例如你的MySQL端口为3307,就添加port: 3307即可。

内容的提问来源于stack exchange,提问作者Alper Yıldırım

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 04:24:05