无法从节点访问mysql容器,但只能从终端访问

oxf4rvwz  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(332)

我创建了一个由 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

我可以成功连接到此服务器。在那里指定的用户与在节点应用程序中传递给我的连接建立的用户相同。我已经搞砸了大概4个小时了,不知道我做错了什么。我要做些什么才能让它工作?
让我知道如果有什么我需要提供,以帮助我的问题。谢谢!

nmpmafwu

nmpmafwu1#

您正在尝试连接到 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'
};

相关问题