【发布时间】:2020-06-18 01:27:28
【问题描述】:
我正在尝试完全使用 NodeJS+Express、MySQL、phpmyadmin。在我的情况下,phpmyadmin 本身通过端口8183 解析地址。但是每当我要通过 NodeJS 的 mysql js 包连接它时。它不工作并抛出错误
Error: connect ECONNREFUSED 127.0.0.1:3306
注意:作为主持人,我尝试了一些变化,但没有人为我工作!
例如:mysql, my_machine_ip, localhost, 0.0.0.0
没有什么对我有用。
这是我的yml 文件。
version : '3'
services:
phpmyadmin:
image: phpmyadmin/phpmyadmin
container_name: node_pa
links:
- mysql
depends_on:
- mysql
environment:
PMA_HOST: mysql
PMA_PORT: 3306
PMA_ARBITRARY: 1
restart: always
ports:
- 8183:80
node_backend:
container_name: node_with_pa_msql
build: ./backend_app
# volumes:
# - ./backend_app:/usr/src/app
links:
- mysql
depends_on:
- mysql
restart: on-failure
ports:
- 3004:4006
mysql:
image: mysql:latest
container_name: node_mysql
# volumes:
# - backend_app/db_sample:/docker-entrypoint-initdb.d
environment:
MYSQL_USER: user
MYSQL_PASSWORD: user
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: default_schema
和mysqlJS的连接细节
// environment variables
const PORT = process.env.PORT || 4006;
const HOST = process.env.HOST || 'localhost';
// // mysql credentials
const connection = mysql.createConnection({
host: HOST,
user: process.env.MYSQL_USER || 'root',
password: process.env.MYSQL_PASSWORD || 'root',
connectTimeout: 20000
});
所以,phpmyadmin 正在工作,我可以通过它访问数据库/创建/删除/编辑,这样可以确保 mysql 本身也可以工作,但是现在我无法将它与我的 nodejs 应用程序的 mysqlJS 连接。
如果您想在您的机器上试用,这里是有问题的示例项目project GitHub link with YAML file
注意:检查答案添加了此问题的完整解决方案。
【问题讨论】:
-
你的mysql数据库在哪个端口运行?
-
@SeppeMariën 这是
3306我相信默认端口。 -
如何启动 docker?或者,如果可能的话,您能否提供 docker 桌面的快照
-
@SeppeMariën 这是我用来测试的完整代码。你可以检查并尝试github.com/MahbbRah/docker_mysql_node_phpmyadmin.git
-
你使用docker桌面吗?
标签: mysql node.js docker docker-compose