javascript - NodeJS/mySQL - ER_ACCESS_DENIED_ERROR 用户 'root' @'localhost' 的访问被拒绝(使用密码 : YES)

标签 javascript mysql node.js ubuntu

我正在尝试通过 NodeJS 文件连接到 mySQL,但收到以下错误:

{ Error: ER_ACCESS_DENIED_ERROR: Access denied for user 'root'@'localhost' (using password: YES)
    at Handshake.Sequence._packetToError (/home/matthew/Node/mySqlTest/node_modules/mysql/lib/protocol/sequences/Sequence.js:30:14)
    at Handshake.ErrorPacket (/home/matthew/Node/mySqlTest/node_modules/mysql/lib/protocol/sequences/Handshake.js:67:18)
    at Protocol._parsePacket (/home/matthew/Node/mySqlTest/node_modules/mysql/lib/protocol/Protocol.js:197:24)
    at Parser.write (/home/matthew/Node/mySqlTest/node_modules/mysql/lib/protocol/Parser.js:62:12)
    at Protocol.write (/home/matthew/Node/mySqlTest/node_modules/mysql/lib/protocol/Protocol.js:37:16)
    at Socket.ondata (_stream_readable.js:555:20)
    at emitOne (events.js:101:20)
    at Socket.emit (events.js:188:7)
    at readableAddChunk (_stream_readable.js:176:18)
    at Socket.Readable.push (_stream_readable.js:134:10)
    --------------------
    at Protocol._enqueue (/home/matthew/Node/mySqlTest/node_modules/mysql/lib/protocol/Protocol.js:110:26)
    at Protocol.handshake (/home/matthew/Node/mySqlTest/node_modules/mysql/lib/protocol/Protocol.js:42:41)
    at Connection.connect (/home/matthew/Node/mySqlTest/node_modules/mysql/lib/Connection.js:81:18)
    at Connection._implyConnect (/home/matthew/Node/mySqlTest/node_modules/mysql/lib/Connection.js:222:10)
    at Connection.query (/home/matthew/Node/mySqlTest/node_modules/mysql/lib/Connection.js:137:8)
    at Object.<anonymous> (/home/matthew/Node/mySqlTest/index.js:11:12)
    at Module._compile (module.js:570:32)
    at Object.Module._extensions..js (module.js:579:10)
    at Module.load (module.js:487:32)
    at tryModuleLoad (module.js:446:12)
  code: 'ER_ACCESS_DENIED_ERROR',
  errno: 1045,
  sqlState: '28000',
  fatal: true }

奇怪的是,我可以通过运行 mysql -u root -p 通过终端正常连接。我只在运行我的 javascript 时收到此错误。我一直在使用 Google 和 StackOverflow,但仍然没有找到可行的解决方案。我在虚拟机上的 Ubuntu 16.04.1 上使用 MySQL 5.7.16。不确定VM是否在这里有所作为。我的 Javascript 代码如下:

'use strict';                                                                                                                                      

var mysql = require('mysql');

var connection = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: 'password'
});

connection.query(
    'SELECT "foo" AS first_field, "bar" AS second_field',
    function(err, results, fields) {
        console.log(err);
        console.log(results);
        connection.end();
    }
);

我尝试在我的 javascript 中使用“locahost”和“127.0.0.1”。我在 mySql.user 表中有一个 'localhost' 和 '127.0.0.1' 的 'root' 用户,我可以通过执行 SELECT user, host FROM mysql.user WHERE user='root'; 看到这一点

我通过执行以下命令为“root”用户添加了权限:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY 'password';

我也在 127.0.0.1 上运行了上述内容。我也试过这个:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION

我曾尝试像这样重置 root 密码: https://help.ubuntu.com/community/MysqlPasswordReset

我在每次尝试后都运行了 FLUSH PRIVILEGES。我已经停止并重新启动了 mySQL。我已完全卸载 mySQL 并重新安装。

一切都无济于事。每次我尝试运行 javascript 时都会收到拒绝访问错误,但是当我通过终端连接到 mySQL 时完全没有问题。

有什么想法吗?

最佳答案

我也有同样的问题,我把密码改成空字符串解决了。

var mysql = require('mysql');
var connection = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: ''
});

关于javascript - NodeJS/mySQL - ER_ACCESS_DENIED_ERROR 用户 'root' @'localhost' 的访问被拒绝(使用密码 : YES),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40477625/

相关文章:

mysql - 获取今天是日期后 6 个月后的记录

node.js - 如何在使用 Node 的进程的退出回调中等待 setTimeout?

node.js - heroku 应用程序重命名中缺少步骤

javascript - `document.body.appendChild(elem);` 附加到 html 正文的末尾。如何放置在 body 的特定位置?

javascript - 从下拉列表中选择数据时从 MYSQL 数据库设置输入字段值属性

mysql - 向 WordPress posts 表添加联合主键

php - 如何使用 Swift 2.1 和 Xcode 从 PHP 文件中获取 JSON 数据?

node.js - express.Router 和 app.get 的区别?

php - 使用 javascript 进行整数验证

JavaScript 验证