ER_ACCESS_DENIED_ERROR: Когда я пытаюсь подключиться к базе данных на удаленном сервере - Node.js - PullRequest
1 голос
/ 15 февраля 2020

У меня проблема при попытке подключиться к базе данных на удаленном сервере.

Мой код:

const mysql = require('mysql');
const database = mysql.createPool({
    host: 'localhost',
    user: 'user',
    password: 'pass',
    database: 'db'
});

database.getConnection(function (err, connection) {
    if (!err) {
        console.log('Database is connected ...');
    } else {
        console.log('Error connecting database ...');
    }
});

Учетные данные для подключения в коде подделаны. Имея правильные учетные данные, я успешно захожу на phpMyAdmin на удаленном сервере, на базе данных, к которой я хочу подключиться. Учетные данные хороши.

Когда я запускаю скрипт, возвращаю эту ошибку: ошибка просмотра

Кроме того, когда я вводю учетные данные для соединения с моей локальной базой данных, все работает отлично.

Ответы [ 2 ]

1 голос
/ 15 февраля 2020

Как указал Луук, вам нужно заменить localhost на фактический IP-адрес удаленного сервера базы данных и порт, на котором работает сервер базы данных.

Например -

const database = mysql.createPool({
    host: '123.234.121.234',
    port : '3306',
    user: 'user',
    password: 'pass',
    database: 'db'
}); 

Кроме того, убедитесь, что порт внесен в белый список и доступен по сети. Вот маленькая диаграмма для объяснения.

enter image description here

0 голосов
/ 15 февраля 2020

phpmyadmin работает на той же машине, что и ваш MySQL сервер, поэтому он может подключиться к серверу, используя c имя хоста localhost.

Я думаю, из вашего вопроса, что ваш nodejs Программа запускается на другом компьютере (возможно, на вашем персональном компьютере). Для этого требуется специальная настройка.

  1. Вы должны использовать фактическое имя хоста сервера в свойстве host:, а не localhost.

  2. MySQL учетные данные для входа не просто имя пользователя / пароль. Это хост / имя пользователя / пароль. Вам может потребоваться создать новый набор учетных данных для удаленного доступа, чтобы ваша программа nodejs могла войти. Прочитайте это: https://webmasters.stackexchange.com/questions/2242/how-to-create-separate-users-in-phpmyadmin-each-one-cant-see-others-databases

  3. Если ваш * Сервер 1032 * работает на арендованном сервере в каком-либо облачном или хостинговом сервисе, вам может потребоваться открыть брандмауэр, чтобы разрешить подключение вашей машины. Если вы пользуетесь услугами хостинга, спросите об этом их службу поддержки. В облачной службе вы хотите открыть порт 3306. Посмотрите, как это сделать, в их документации. (Это может быть непростое задание по настройке).

Самый простой способ устранения неполадок - использовать клиентскую программу MyQSL (например, MySQL Workbench или Heidi SQL) самостоятельно. машина. когда вы получаете это для подключения, вы можете использовать те же учетные данные в вашем createPool() вызове.

...