nodejs访问远程数据库失败,用dbeaver是能连接到这个数据库的
代码块功能
const dns = require('dns');
let HOSTA = ''
//一开始用的resolve 后来改成了lookup
//dns.resolve('www.liuyue.fun', (err, records) => {
// HOSTA = records[0]
dns.lookup('www.baidu.com', (err, address, family) => {
console.log('records', address)
HOSTA = address
if (err) {
console.error('--域名解析失败' + err)
}
console.log('HOSTA', HOSTA)
});
这里解析出的ip是 110.242.68.3(我以百度举例,实际上我是用家里电脑的域名解析出来的公网ip)
接下来创建服务器连接:
const mysql = require('mysql');
// 创建连接池
const pool = mysql.createPool({
host: HOSTA,
port: 3366, //家里数据库设置的端口是3366
user: 'root', //用户名
password: 'password', // 密码
database: 'database_name', // 数据库名字
connectionLimit: 10
})
运行结果及报错内容
结果报错了,我看报错里的地址是127.0.0.1,这还是本地的地址,但是我Host不是写了上边域名解析过的公网Ip了嘛?
Error: connect ECONNREFUSED 127.0.0.1:3366
at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1146:16)
--------------------
at Protocol._enqueue (E:\h5\track-news\newsServer\node_modules\mysql\lib\protocol\Protocol.js:144:48)
at Protocol.handshake (E:\h5\track-news\newsServer\node_modules\mysql\lib\protocol\Protocol.js:51:23)
at PoolConnection.connect (E:\h5\track-news\newsServer\node_modules\mysql\lib\Connection.js:116:18)
at Pool.getConnection (E:\h5\track-news\newsServer\node_modules\mysql\lib\Pool.js:48:16)
at E:\h5\track-news\newsServer\utils\query.js:47:14
at new Promise (<anonymous>)
at module.exports (E:\h5\track-news\newsServer\utils\query.js:45:12)
at E:\h5\track-news\newsServer\app.js:17:5
at Layer.handle [as handle_request] (E:\h5\track-news\newsServer\node_modules\express\lib\router\layer.js:95:5)
at next (E:\h5\track-news\newsServer\node_modules\express\lib\router\route.js:144:13) {
errno: -4078,
code: 'ECONNREFUSED',
syscall: 'connect',
address: '127.0.0.1',
port: 3366,
fatal: true
}
[nodemon] app crashed - waiting for file changes before starting...
我(前端)是在另一个地方开发,想连接到家里的数据库。用了以上方法行不通,查了好久“nodejs 连接远程数据库”之类的,都查不到结果。请教大家!!!TAT!!!