Node.js nodejs mysql未使用完整配置
首先,我在这里和谷歌都找不到任何答案。我可能会寻找错误的方向,并感谢任何帮助。Node.js nodejs mysql未使用完整配置,node.js,knex.js,node-mysql,Node.js,Knex.js,Node Mysql,首先,我在这里和谷歌都找不到任何答案。我可能会寻找错误的方向,并感谢任何帮助。 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 (total
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)在这两台具有相同凭据的计算机上进行了远程测试,并取得了成功
为了避免其他代码的干扰,我使用npminit
启动了一个新项目。它有一个文件: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();
code: 'ER_ACCESS_DENIED_ERROR',
sqlMessage: "Access denied for user 'user_name'@'200.200.200.200' (using password: YES)",
sqlState: '28000',
fatal: true
code: 'ER_ACCESS_DENIED_ERROR',
sqlMessage: "Access denied for user 'user_name'@'202.202.202.202' (using password: YES)",
sqlState: '28000',
fatal: true
200.200.200.200
这里是一个网络真实IP的示例
错误如下:
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();
code: 'ER_ACCESS_DENIED_ERROR',
sqlMessage: "Access denied for user 'user_name'@'200.200.200.200' (using password: YES)",
sqlState: '28000',
fatal: true
code: 'ER_ACCESS_DENIED_ERROR',
sqlMessage: "Access denied for user 'user_name'@'202.202.202.202' (using password: YES)",
sqlState: '28000',
fatal: true
然后,我将这个小型测试项目克隆到另一台计算机上,并使用示例IP202.202.202
在不同的网络中进行测试,错误如下:
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();
code: 'ER_ACCESS_DENIED_ERROR',
sqlMessage: "Access denied for user 'user_name'@'200.200.200.200' (using password: YES)",
sqlState: '28000',
fatal: true
code: 'ER_ACCESS_DENIED_ERROR',
sqlMessage: "Access denied for user 'user_name'@'202.202.202.202' (using password: YES)",
sqlState: '28000',
fatal: true
显然,mysql库已经修改了用户名,但主机没有。我假设密码也被接收了。由于使用密码:YES
我认为这与数据库无关,因为如果没有使用正确的IP,代码甚至还没有触及数据库服务器
它看起来像是在使用localhost
,但它不应该是192.168.x
,而且我在任何地方都不使用localhost
我尝试了几个版本的node,看起来它与node无关knex
和mysql
是使用npm
新安装的。项目尽可能干净。我不认为任何有问题的地方都会导致这种情况
感谢您的帮助。检查您的数据库用户名和密码。若它在之前工作过,那个么它现在应该工作了,我认为它和你们的任何依赖节点都并没有关系
如果密码一直不起作用,请尝试更改密码并重试。根据您的示例,mysql库使用配置,因此它没有理由选择您的用户名和密码,而是显式忽略您的主机。我将尝试一组新的用户名和帐户。谢谢你说得对。我仍然不知道它为什么会抛出这样的错误,但是重置用户名和密码确实有效。谢谢