Nodejs mysql连接总是出错 Error: connect ECONNREFUSED

Nodejs mysql连接总是出错 Error: connect ECONNREFUSED

第一次自己假设网站第一次用node.js第一次用mysql。。

环境: Ubuntu 12.04 LTS node.js 版本:v0.6.12 mysql 版本:2.0.0-alpha7

我的代码: var mysql = require( ‘mysql’ ); var connection = mysql.createConnection( { host:‘127.0.0.1’, user:‘userme’, password:‘sqllogin’ });

console.log( connection );

var databaseName = ‘usersdata’;

connection.connect( function(err) { if( err ) { console.log( err ); } else { console.log( ‘mysql connected’ ); } });

connection.end();

最后的错误信息(包括connection输出)是:

{ config: { host: ‘127.0.0.1’, port: 3306, socketPath: undefined, user: ‘nbook’, password: ‘sqllogin’, database: undefined, insecureAuth: false, supportBigNumbers: false, debug: undefined, timezone: ‘local’, flags: ‘’, queryFormat: undefined, pool: undefined, typeCast: true, maxPacketSize: 0, charsetNumber: 33, clientFlags: 193487 }, _socket: undefined, _protocol: { readable: true, writable: true, _config: { host: ‘127.0.0.1’, port: 3306, socketPath: undefined, user: ‘nbook’, password: ‘sqllogin’, database: undefined, insecureAuth: false, supportBigNumbers: false, debug: undefined, timezone: ‘local’, flags: ‘’, queryFormat: undefined, pool: undefined, typeCast: true, maxPacketSize: 0, charsetNumber: 33, clientFlags: 193487 }, _connection: [Circular], _callback: null, _fatalError: null, _quitSequence: null, _handshakeSequence: null, _destroyed: false, _queue: [], _handshakeInitializationPacket: null, _parser: { _supportBigNumbers: false, _buffer: <Buffer >, _longPacketBuffers: [], _offset: 0, _packetEnd: null, _packetHeader: null, _onPacket: [Function], _nextPacketNumber: 0, _encoding: ‘utf-8’, _paused: false } }, _connectCalled: false } Express is listening. { [Error: connect ECONNREFUSED] code: ‘ECONNREFUSED’, errno: ‘ECONNREFUSED’, syscall: ‘connect’, fatal: true }

诚心向各位请教!

在网上查来查去,说是什么port localhost之类的问题,还有说socket问题,但是我电脑里/var/run并没有socket。。是要安装什么吗?


10 回复

针对您遇到的 Error: connect ECONNREFUSED 错误,这通常意味着 MySQL 服务器没有运行或无法通过指定的地址和端口访问。以下是一些可能的原因及解决步骤:

可能的原因

  1. MySQL 服务未运行:确保 MySQL 服务已经在您的系统上启动。
  2. 配置错误:检查数据库连接配置是否正确。
  3. 防火墙设置:确保防火墙允许从 Node.js 应用到 MySQL 服务器的连接。

解决步骤

1. 确保 MySQL 服务正在运行

您可以使用以下命令检查 MySQL 服务状态:

sudo service mysql status

如果服务没有运行,可以使用以下命令启动它:

sudo service mysql start

2. 检查配置

您的配置中缺少了 database 字段。确保在连接时指定了正确的数据库名称。此外,确保主机名、用户名和密码都是正确的。

3. 配置防火墙

如果您有防火墙,确保开放了 MySQL 默认端口 3306。您可以使用以下命令添加一个规则:

sudo ufw allow 3306/tcp

示例代码

下面是修正后的示例代码:

var mysql = require('mysql');

// 创建连接配置
var connection = mysql.createConnection({
    host: '127.0.0.1',
    user: 'userme',
    password: 'sqllogin',
    database: 'usersdata' // 添加数据库名称
});

// 连接数据库
connection.connect(function(err) {
    if (err) {
        console.error('Error connecting to MySQL:', err);
        return;
    }
    console.log('Connected to MySQL database');
});

// 结束连接
connection.end();

总结

  • 确认 MySQL 服务已启动。
  • 检查并确认数据库连接配置是否正确。
  • 如果需要,调整防火墙设置以允许连接。

希望这些步骤能帮助您解决问题!如果问题仍然存在,请提供更多详细信息以便进一步诊断。


推荐你用easymysql客户端试试 这个挺方便

你添加一个默认端口试试,将代码修改为如下!

var mysql = require( 'mysql' );
var connection = mysql.createConnection( {
host:'127.0.0.1',
user:'userme',
password:'sqllogin',
port:3306
});

你能完成 测试 这个账号有没权限登录数据库没有

好,下次试一试。 谢谢!

唔。。 其实我的问题是超级愚蠢的。 原来是我没有安装mysql-server apt-get install mysql-server 装完之后配置下问题就解决了。

第一次使用mysql。。以为npm install -g mysql就安装好了。 以为第一次连接会先帮创建用户。

谢谢!

问题解决啦。 谢谢!

呵呵

我遇到了同样的问题,不知道怎么办了,希望帮忙解答,谢谢。

从错误信息来看,你遇到的是 ECONNREFUSED 错误,这通常意味着 MySQL 服务器拒绝了你的连接请求。可能的原因包括:

  1. MySQL 服务未启动:确保 MySQL 服务正在运行。
  2. 配置错误:检查主机名、端口号、用户名和密码是否正确。
  3. 防火墙/安全组设置:确保没有防火墙或安全组规则阻止连接。

以下是调整后的代码示例,包含数据库名称和端口设置,并添加了错误处理逻辑:

var mysql = require('mysql');

var connection = mysql.createConnection({
    host: '127.0.0.1',
    user: 'userme',
    password: 'sqllogin',
    port: 3306, // 确保使用正确的端口号
    database: 'usersdata' // 添加数据库名称
});

connection.connect(function(err) {
    if (err) {
        console.error('Error connecting to MySQL:', err);
        return;
    }
    console.log('MySQL connected');
});

// 如果你需要执行其他操作,可以在这里添加
// connection.query(...);

connection.end();

解决步骤:

  1. 确认 MySQL 服务运行

    sudo service mysql status
    

    如果未运行,启动它:

    sudo service mysql start
    
  2. 检查 MySQL 配置

    • 确认 my.cnfmy.ini 文件中配置正确。
    • 检查 MySQL 用户权限。
  3. 检查防火墙设置

    sudo ufw status
    

    如果防火墙启用且阻止了连接,你可以添加规则允许 MySQL 连接:

    sudo ufw allow 3306/tcp
    

通过以上步骤,你应该能够解决 ECONNREFUSED 错误。

回到顶部