node.js mysql error: ECONNREFUSED

匿名 (未验证) 提交于 2019-12-03 01:12:01

问题:

Why can't I connect to the mysql server?

On the same server an Apache/PHP server is running and it connects without problems!?

var mysql_link = {     host : 'localhost',     port : 3308,     database: 'nodetest',     user : 'root',     password : 'xxx' };  var connection = mysql.createConnection(mysql_link);  connection.connect(function(err){     console.log(err);     if(err != null){         response.write('Error connecting to mysql:' + err+'\n');     } });  connection.end(); 

error

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

update

root@dyntest-amd-6000-8gb /var/www/node/dyntest # ps ax | grep mysqld  7928 pts/0    S+     0:00 grep mysqld 28942 ?        S      0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/var/lib/mysql --pid-file=/var/run/mysqld/mysqld.pid 29800 ?        Sl    17:31 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/var/lib/mysql --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/var/lib/mysql/mysql-error.log --open-files-limit=65535 --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/run/mysqld/mysqld.sock --port=3306 

回答1:

If this has worked before, my first guess would be that you've already got a copy of your node.js script running in the background which is holding the connection.

I believe connection refused is a tcp/ip error message, rather than something from MySQL which suggests that it is either not running or is running on another port or with sockets.

Could you try telnet'ing to port 3308? To see if the server is running on that port?

telnet localhost 3308 

Can you also try:

mysql -hlocalhost -uroot -pxxx 


回答2:

I know this question has been answered, but for me the problem was that the mysql server listens on a Unix socket not on a tcp socket. So the solution was to add:

port: '/var/run/mysqld/mysqld.sock' 

to the connection options.



回答3:

Overview

For anyone else having this problem and is running MAMP. I suspected the problem had to do with the network and not MySQL or Node.js.

Solution

If you open MAMP and click MySQL in the left navigation panel it will pull up the MySQL options page. In the center of the page you will see a checkbox that says,

"Allow network access to MySQL".

Check this box and then restart your MAMP. At this point you can now test your connection to MySQL with telnet or a node.js script.

Hint

Remember you can check which port your MySQL is running on by opening MAMP and clicking the ports link on the left navigation panel.

Visual Aid



回答4:

For some very odd reason, my computer only allowed me to have port 3306 as default port for my connection in order for it to work.



回答5:

I have also this problem when i try to connect and disconnect many time, I was solved this problem by end connection and running the server, after connection closed, now i can connect without problems

As below :

mysql.createConnection() connection.end(); after the server running well, remove connection.end() function from your code and re-run the server



易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!