felixge / node-mysql не может подключиться к базе данных - PullRequest
3 голосов
/ 27 ноября 2011

Я установил felixge/node-mysql через npm (npm install mysql), и теперь я хочу подключиться к базе данных mysql, но каждый раз, когда я пытаюсь подключиться, возникает эта ошибка:

{ [Error: connect ECONNREFUSED]
  code: 'ECONNREFUSED',
  errno: 'ECONNREFUSED',
  syscall: 'connect' }
undefined

мой источник nodejs:

var mysql = require("mysql")
var db = mysql.createClient({
    host:"localhost",
    user:"root",
    password:"root"
});

db.query("SELECT 1",function(err,result,fields){
    if(err) {
        console.log(err);
    }
    console.log(result);
});

Но я могу легко получить доступ к своей базе данных MySQL через командную строку:

[user@host] $ mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.5.18-log Source distribution

Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> SELECT 1
    -> ;
+---+
| 1 |
+---+
| 1 |
+---+
1 row in set (0.00 sec)

mysql> 

Кто-нибудь может мне помочь, в чем моя ошибка?

Ответы [ 4 ]

4 голосов
/ 10 декабря 2013

Вам нужно установить socketPath

mysql = require('mysql');
var connection = mysql.createConnection({
    host     : 'localhost',
    user     : 'root',
    password : 'password',
    socketPath  : '/var/run/mysqld/mysqld.sock',

});
2 голосов
/ 27 ноября 2011

Мне пришлось изменить файл конфигурации mysql.Я прокомментировал skip-networking, и это исправило мою проблему.

Если кто-нибудь может объяснить мне, почему это хорошо, я бы поблагодарил его.

1 голос
/ 13 января 2014

Я использую MAMP на MacOSX, не забудьте добавить это

"socketPath": "/Applications/MAMP/tmp/mysql/mysql.sock"

{
    "host": "localhost",
    "port": 3306,
    "user": "nodejs",
    "password": "nodejs",
    "database": "crawler",
    "socketPath": "/Applications/MAMP/tmp/mysql/mysql.sock"
}
0 голосов
/ 27 ноября 2011

Когда вы подключаетесь к mysql с помощью node-mysql, вам необходимо указать ваше имя хоста.Если вы используете Linux, вы можете узнать это с помощью команды: hostname

Итак, вы знаете, у меня та же проблема, я могу подключиться к mysql через командную строку без указания имени хоста, но вузел вам нужно поменять.По крайней мере, в моем случае.(v0.4.10) Почему?Я не уверен, так что, возможно, у кого-то есть идея.

var mysql = require("mysql")
var db = mysql.createClient({
    host: --- put what you got from the hostname command ---,
    user:"root",
    password:"root"
});
...