Я пытаюсь подключиться к mySQL через файл NodeJS, но я получаю следующую ошибку:
{ 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, но до сих пор не нашел решения, которое работает. Я использую MySQL 5.7.16 на Ubuntu 16.04.1 на VIRTUAL MACHINE. Не уверен, что виртуальная машина здесь имеет значение. Мой 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();
}
);
Я пробовал использовать "locahost", а также "127.0.0.1" в своем javascript. У меня есть "root" пользователь для "localhost" и "127.0.0.1" в таблице mySql.user, и я могу видеть это, выполняя 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 через терминал.
Есть идеи?