nodejs mysql 未使用完整配置

nodejs mysql not using full config

首先,我在这里和Google找不到任何答案。我可能会搜索错误的方向,感谢您的帮助。

Node: 10.24.1/12.22.1/14.17.0/16.3.0 (These are the versions I tried)
Mysql for node: 2.18.1
Knex: 0.95.0/0.95.4/0.95.5 (Versions I tried)
Test environments: two computers (mac & win) in two networks (totally separated)

背景

代码需要在本地访问mysql数据库。此数据库已通过 HeidiSQL(win) 和 Sequel Ace(mac) 在具有相同凭据的两台计算机上 remotely 成功测试.

为了避免其他代码的干扰,我使用npm init发起了一个新项目。它有一个文件:app.js,代码如下:

var mysql = require('mysql');
var connection = mysql.createConnection({
  host     : '123.123.123.123', // Remote database IP
  user     : 'user_name',
  password : 'pass',
  database : 'mydb'
});

connection.connect();

connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
  if (error) throw error;
  console.log('The solution is: ', results[0].solution);
});

connection.end();

200.200.200.200这里以网络真实IP为例 错误如下:

code: 'ER_ACCESS_DENIED_ERROR',
sqlMessage: "Access denied for user 'user_name'@'200.200.200.200' (using password: YES)",
sqlState: '28000',
fatal: true

然后我将这个迷你测试项目克隆到另一台计算机,并使用示例 IP 202.202.202.202 在不同的网络中进行测试,错误如下:

code: 'ER_ACCESS_DENIED_ERROR',
sqlMessage: "Access denied for user 'user_name'@'202.202.202.202' (using password: YES)",
sqlState: '28000',
fatal: true

显然 用户名 已被 mysql 库改编,但 host 不是。我假设 password 也被接受了。因为 using password: YES.

我认为这与数据库无关,因为没有使用正确的 IP,代码甚至还没有接触到数据库服务器。

看起来好像用的是localhost,但不应该是192.168.x.x而且我也没有在任何地方使用localhost

我试了几个版本的node,看起来和node无关。 knexmysql 是使用 npm 全新安装的。项目尽可能干净。我不能在任何有问题的地方引起这个问题。

感谢任何帮助。

检查您的数据库用户名和密码。如果它之前工作那么它现在应该工作并且我认为它与您的任何依赖节点无关。

如果它永远不起作用,请尝试更改您的密码并重试。从您的示例中,配置由 mysql 库使用,因此它没有理由选择您的用户名和密码但明确忽略您的主机。