首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >节点MySQL连接

节点MySQL连接
EN

Stack Overflow用户
提问于 2020-02-06 17:32:26
回答 1查看 507关注 0票数 3

所有-我一直在学习node。我最近比较熟悉php和mysql,所以一直使用mysql作为数据库。与mysql的连接出现问题。我正在使用mysql和dotenv包。昨天我让它工作得很好。然而,当我今天尝试的时候,我从mysql得到了一个错误,说它拒绝访问''@local host,它看起来像是一个匿名用户。以下错误:

代码语言:javascript
复制
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

为了确保我确实拉入了相关的变量,我将它们打印到控制台,这样我就可以看到它们,它们看起来都像预期的那样。我的代码如下:

代码语言:javascript
复制
// 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!');
});

当我简单地硬编码凭据时,我仍然会得到相同的错误,就好像传入了空格一样。

节点工作方式中有没有什么东西会导致我遇到这个问题?或者在连接变量(例如缺少引号)中会导致这种情况?

谢谢

EN

回答 1

Stack Overflow用户

发布于 2020-02-06 17:36:16

我认为您需要在连接配置中使用user,而不是username (参见此处的mysql docs ),例如:

代码语言:javascript
复制
const connection = mysql.createConnection({
  host: process.env.DB_HOST,
  user: process.env.DB_USER,
  password: process.env.DB_PASS,
  database: process.env.DB_DATABASE
});

这应该可以解决这个问题!

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60091672

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档