所有-我一直在学习node。我最近比较熟悉php和mysql,所以一直使用mysql作为数据库。与mysql的连接出现问题。我正在使用mysql和dotenv包。昨天我让它工作得很好。然而,当我今天尝试的时候,我从mysql得到了一个错误,说它拒绝访问''@local host,它看起来像是一个匿名用户。以下错误:
Error: ER_ACCESS_DENIED_ERROR: Access denied for user ''@'localhost' (using password: YES)
at Handshake.Sequence._packetToError (C:\Websites\quotebuilder\node_modules\mysql\lib\protocol\sequences\Sequence.js:47:14)
at Handshake.ErrorPacket (C:\Websites\quotebuilder\node_modules\mysql\lib\protocol\sequences\Handshake.js:123:18)
at Protocol._parsePacket (C:\Websites\quotebuilder\node_modules\mysql\lib\protocol\Protocol.js:291:23)
at Parser._parsePacket (C:\Websites\quotebuilder\node_modules\mysql\lib\protocol\Parser.js:433:10)
at Parser.write (C:\Websites\quotebuilder\node_modules\mysql\lib\protocol\Parser.js:43:10)
at Protocol.write (C:\Websites\quotebuilder\node_modules\mysql\lib\protocol\Protocol.js:38:16)
at Socket.<anonymous> (C:\Websites\quotebuilder\node_modules\mysql\lib\Connection.js:88:28)
at Socket.<anonymous> (C:\Websites\quotebuilder\node_modules\mysql\lib\Connection.js:526:10)
at Socket.emit (events.js:223:5)
at addChunk (_stream_readable.js:309:12)
--------------------
at Protocol._enqueue (C:\Websites\quotebuilder\node_modules\mysql\lib\protocol\Protocol.js:144:48)
at Protocol.handshake (C:\Websites\quotebuilder\node_modules\mysql\lib\protocol\Protocol.js:51:23)
at Connection.connect (C:\Websites\quotebuilder\node_modules\mysql\lib\Connection.js:116:18)
at Object.<anonymous> (C:\Websites\quotebuilder\db.js:16:12)
at Module._compile (internal/modules/cjs/loader.js:955:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:991:10)
at Module.load (internal/modules/cjs/loader.js:811:32)
at Function.Module._load (internal/modules/cjs/loader.js:723:14)
at Module.require (internal/modules/cjs/loader.js:848:19)
at require (internal/modules/cjs/helpers.js:74:18) {
code: 'ER_ACCESS_DENIED_ERROR',
errno: 1045,
sqlMessage: "Access denied for user ''@'localhost' (using password: YES)",
sqlState: '28000',
fatal: true为了确保我确实拉入了相关的变量,我将它们打印到控制台,这样我就可以看到它们,它们看起来都像预期的那样。我的代码如下:
// initialize database connection
const mysql = require('mysql');
console.log(process.env.DB_HOST);
console.log(process.env.DB_USER);
console.log(process.env.DB_PASS);
console.log(process.env.DB_DATABASE);
const connection = mysql.createConnection({
host: process.env.DB_HOST,
username: process.env.DB_USER,
password: process.env.DB_PASS,
database: process.env.DB_DATABASE
});
connection.connect((err) => {
if (err) throw err;
console.log('Connected!');
});当我简单地硬编码凭据时,我仍然会得到相同的错误,就好像传入了空格一样。
节点工作方式中有没有什么东西会导致我遇到这个问题?或者在连接变量(例如缺少引号)中会导致这种情况?
谢谢
发布于 2020-02-06 17:36:16
我认为您需要在连接配置中使用user,而不是username (参见此处的mysql docs ),例如:
const connection = mysql.createConnection({
host: process.env.DB_HOST,
user: process.env.DB_USER,
password: process.env.DB_PASS,
database: process.env.DB_DATABASE
});这应该可以解决这个问题!
https://stackoverflow.com/questions/60091672
复制相似问题