密码都对Node.js却连不上Linux数据库

代码已经部署在本地,确认MySQL运行中,反复核对密码都对。需要增加socketPath

sql 复制代码
const DB = {
  socketPath: '/var/run/mysqld/mysqld.sock',
  host: 'localhost',
  user: 'root',
  password: '',
  database: 'room520',
  // port 删掉!socket模式不使用端口,写了也无效
};
const conn = await mysql.createConnection(DB);

结论

这个配置在 Linux 下大概率连不上,原因要分开讲清楚:

yaml 复制代码
const DB = {
  host    : 'localhost',
  user    : 'root',
  password: '',
  port    : 3380,
  database:  'room520',
};

核心原理(Linux 上 mysql2 的行为)

在 Linux 平台:当 host: 'localhost' 时,mysql2 会优先走 Unix socket(mysqld.sock),完全忽略 port 参数! 端口 3380 只对 TCP 连接生效,socket 连接不使用端口。

你现在数据库状态:

  • root@localhost:socket 空密码 ,命令行 mysql -uroot 直接登录,这是 socket 登录。

  • 但是你的JS配置写了 host:'localhost' + port:3380,mysql2 直接走 socket,port 3380 被无视。

    理论上 socket 模式空密码可以连上,但 mysql2 对空密码 + socket 的兼容不稳定,经常报 ER_ACCESS_DENIED_NO_PASSWORD_ERROR,就是你遇到的报错。


两种可行写法,二选一

方案1:使用socket(对应root空密码,和你命令行登录一致)

去掉port,增加socketPath

csharp 复制代码
const DB = {
  socketPath: '/var/run/mysqld/mysqld.sock',
  host    : 'localhost',
  user    : 'root',
  password: '',
  database:  'room520',
};

✅ 这个是 socket 连接,不需要端口,空密码root可以连上。 ⚠️ 缺点:只能本机运行,不能远程;环境迁移容易出错,不推荐业务脚本长期用。

方案2:TCP方式(推荐,用dudubb账号,port=3380,稳定)

arduino 复制代码
const DB = {
  host    : '127.0.0.1', // 重点!写127.0.0.1才会走TCP,读取port
  user    : 'dudubb',
  password: 'Dudubb@123456',
  port    : 3380,
  database:  'room520',
};

host:127.0.0.1 = 强制TCP,port=3380生效,不受socket影响。前提:执行ALTER把dudubb改成mysql_native_password。

一句话总结

  1. host:'localhost':Linux mysql2默认socket,port无效,空密码root容易报错。
  2. host:'127.0.0.1':TCP连接,port=3380生效,适合Node脚本。

你想试socket的root空密码版本,还是直接用dudubb TCP版本?

相关推荐
Apipi*6 小时前
30天速通Linux 第六章信号及信号处理
linux·运维·信号处理
天启HTTP7 小时前
爬虫防封核心原理:IP轮换机制与风控规避逻辑
linux·服务器·网络·爬虫·tcp/ip
广州浮点FLOATLIC9 小时前
许可证服务器迁移后软件打不开:研发 IT 怎样定位连接问题
linux·服务器·数据库
程序员Sunday9 小时前
MySQL 为什么使用 B+ 树索引?把范围查询、回表和覆盖索引连起来
数据库·mysql
BLUcoding10 小时前
接口服务公网超时排查记录:SecureRandom 阻塞问题分析与解决
java·linux·springboot·aes·securerandom
AIgorithmGEEK10 小时前
[Linux]从手写报头到内核套路:序列化、反序列化与自定义协议全链路
linux·运维·服务器·网络·序列化·反序列化
Yyyyyy~10 小时前
[ Mysql ] 库的操作
mysql
Nil20810 小时前
leetcode 139单词拆分
linux·运维·服务器
Starry-sky(jing)10 小时前
BUG: unable to handle kernel paging request 完整排查:dmesg 四要素与三路定罪
linux·运维·服务器·内核·排障
mounter62510 小时前
从硬件互连到操作系统变革:CXL 技术演进与 Linux 内核工程挑战
linux·运维·服务器