2016-09-25 4 views
0

Я пытаюсь подключиться к базе данных, которая у меня есть в моем домене. Я создал пользователя с именем public_guests, который может получить доступ к этой базе данных.Доступ запрещен для пользователя (NodeJS и MySQL)

Я использую NodeJS для создания соединения, но получаю следующее сообщение об ошибке.

ER_ACCESS_DENIED_ERROR: Access denied for user

Ошибка следует мой IP-адрес и т.д.

Вот мой код:

mysql = require("mysql"); 

var connection = mysql.createConnection({ 
    host: "humadshah.com", 
    username: "public_guests", 
    password:"hello", 
    databse:"my_quotes" 
}); 

connection.connect(function(error){ 
    if(error){ 
     console.log("Couldn't connect :( Error: " + error); 
    } else { 
     console.log("Connected successfully~!"); 
    }  
}); 

Я никогда не использовали базу данных раньше, поэтому я ожидал этого быть глупой ошибкой где-то.

+1

Я куплю пиво для тех, кто решает эту проблему в течение часа – Drew

+1

Ваш код не имеет значения. Ваш пароль неправильный, ваш пользователь не разрешен с этого IP-адреса или что-то еще. Кроме того, ваш хост MySQL открыт для ** всего мира ** для подключения. Это не очень хорошая практика. Хотя вам нужны правильные учетные данные, чтобы войти, все еще вероятно, что новая уязвимость MySQL будет найдена однажды. Не открывайте это так широко, если вам не нужно. Наконец, если это ваша первая база данных, могу ли я предложить PostgreSQL? Последняя версия Postgres поддерживает хранение в стиле документа, а также столбчатый, и имеет много других полезных функций. – Brad

+0

@Drew Похоже, они используют GoDaddy. GoDaddy устанавливает пароль по умолчанию на что-то случайное, поэтому может потребоваться больше часа. ;-) – Brad

ответ

2

Как я думаю, это не проблема Node.js.

это разрешения вопрос, который пользователь имеет в частности, IP-адрес, и в сообщении об ошибке говорится:

Access denied for user @some IP

So try to give your root permission for IP where your Node.js instance is running port xxx.xx.xx.xx .

+0

Есть ли способ дать разрешение на все IP-адреса? Я хочу, чтобы к этой базе данных обращался любой человек из любого места –

+0

. Пожалуйста, посмотрите здесь http://stackoverflow.com/questions/8348506/grant-remote-access-of-mysql-database-from-any-ip-address – abdulbarik

+0

@ HumanCyborgRelations Да, это возможно ... это действительно то, что вы хотите? Используйте 'user @%'. – Brad

0

Да вы правы, вы сделали глупую ошибку. Вы сделали все хорошо, кроме настройки ваших параметров mysql.createConnection(). Вы должны использовать user, а не username, как показано ниже:

var mysql = require("mysql"); 

var connection = mysql.createConnection({ 
    host: "humadshah.com", 
    user: "public_guests", 
    password:"hello", 
    databse:"my_quotes" 
}); 

connection.connect(function(error){ 
    if(error){ 
     console.log("Couldn't connect :( Error: " + error); 
    } else { 
     console.log("Connected successfully~!"); 
    }  
}); 

Вы можете, как смотреть Doc https://github.com/mysqljs/mysql#introduction

Смежные вопросы