我创建了一个由docker-compose
运行的节点应用程序。该应用程序需要一个同时启动的mysql服务器,但是当我到达节点应用程序中的要访问服务器的位置时,出现以下错误:
events.js:136
throw er; // Unhandled 'error' event
^
Error: connect ECONNREFUSED 127.0.0.1:3306
at Object._errnoException (util.js:1031:13)
at _exceptionWithHostPort (util.js:1052:20)
at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1195:14)
--------------------
at Protocol._enqueue (/usr/src/node_modules/mysql/lib/protocol/Protocol.js:145:48)
at Protocol.handshake (/usr/src/node_modules/mysql/lib/protocol/Protocol.js:52:23)
at Connection.connect (/usr/src/node_modules/mysql/lib/Connection.js:130:18)
at Connection._implyConnect (/usr/src/node_modules/mysql/lib/Connection.js:461:10)
at Connection.query (/usr/src/node_modules/mysql/lib/Connection.js:206:8)
at Object.<anonymous> (/usr/src/configs/passport.js:15:12)
at Module._compile (module.js:641:30)
at Object.Module._extensions..js (module.js:652:10)
at Module.load (module.js:560:32)
at tryModuleLoad (module.js:503:12)
at Function.Module._load (module.js:495:3)
at Module.require (module.js:585:17)
at require (internal/module.js:11:18)
at Object.<anonymous> (/usr/src/app.js:47:1)
at Module._compile (module.js:641:30)
at Object.Module._extensions..js (module.js:652:10)
相应的节点代码本质上是这样的:
var mysql = require('mysql');
var dbconfig = require('./database');
var connection = mysql.createConnection(dbconfig.connection);
而database.js看起来像这样:
module.exports = {
'connection': {
'host': '127.0.0.1',
'user': 'user',
'password': 'password'
},
'database': 'website_user',
'users_table': 'users'
};
所有这些都可以在我的MacBook上正常运行。当我打开第二个终端窗口并执行时:
mysql -h 127.0.0.1 -u user -p
我可以成功连接到该服务器。指定的用户与在节点应用程序中传递给我的连接建立的用户相同。我大概已经花了四个小时弄乱了,不知道我在做什么错。为了使其正常工作,我必须更改什么?
让我知道我是否需要提供任何帮助我解决问题的东西。谢谢!
最佳答案
您正在尝试从节点容器连接到127.0.0.1:3306
-但这就是节点容器本身。如果您的数据库服务名为mysql
,则您应该能够使用这样的配置(假设docker-compose.yml版本2或更高版本):
module.exports = {
'connection': {
'host': 'mysql',
'user': 'user',
'password': 'password'
},
'database': 'website_user',
'users_table': 'users'
};
关于mysql - 无法从 Node 但从终端访问mysql容器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48291342/