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。。是要安装什么吗?
针对您遇到的 Error: connect ECONNREFUSED
错误,这通常意味着 MySQL 服务器没有运行或无法通过指定的地址和端口访问。以下是一些可能的原因及解决步骤:
可能的原因
- MySQL 服务未运行:确保 MySQL 服务已经在您的系统上启动。
- 配置错误:检查数据库连接配置是否正确。
- 防火墙设置:确保防火墙允许从 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 服务器拒绝了你的连接请求。可能的原因包括:
- MySQL 服务未启动:确保 MySQL 服务正在运行。
- 配置错误:检查主机名、端口号、用户名和密码是否正确。
- 防火墙/安全组设置:确保没有防火墙或安全组规则阻止连接。
以下是调整后的代码示例,包含数据库名称和端口设置,并添加了错误处理逻辑:
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();
解决步骤:
-
确认 MySQL 服务运行:
sudo service mysql status
如果未运行,启动它:
sudo service mysql start
-
检查 MySQL 配置:
- 确认
my.cnf
或my.ini
文件中配置正确。 - 检查 MySQL 用户权限。
- 确认
-
检查防火墙设置:
sudo ufw status
如果防火墙启用且阻止了连接,你可以添加规则允许 MySQL 连接:
sudo ufw allow 3306/tcp
通过以上步骤,你应该能够解决 ECONNREFUSED
错误。