NodeJS无法连接到Docker容器内的MYSQL最新版本 [英] NodeJS could not connect to MYSQL latest version inside Docker Container

查看:535
本文介绍了NodeJS无法连接到Docker容器内的MYSQL最新版本的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

NodeJS无法连接到MySQL最新版本或从8开始,并遇到以下错误消息:

NodeJS cannot connect to MySQL latest version or either 8 onwards and encountered following error message:

ERROR: connect ECONNREFUSED 172.21.0.2:3306

这是我的docker-compose文件

version: '2.1'
services:
  db:
      build: ./db
      networks:
        - ppshein
      environment:
          - MYSQL_ALLOW_EMPTY_PASSWORD=yes
      healthcheck:
          test: "exit 0"
  node:
    build: ./app
    depends_on:
      db:
        condition: service_healthy
    ports:
      - 3000:3000
    networks:
      - ppshein
networks:
  ppshein:

这是数据库Dockerfiles

FROM mysql:5
COPY init_db.sql /docker-entrypoint-initdb.d/

init_db.sql

CREATE DATABASE IF NOT EXISTS database_docker;
GRANT ALL PRIVILEGES on database_docker.*
TO 'root'@'%' IDENTIFIED BY 'ppshein123456'
WITH GRANT OPTION;

NodeJS Dockerfile

FROM node:9.10.1
ENV NODE_ENV=docker
COPY ./ /var/www
WORKDIR /var/www/
RUN yarn install && yarn add sequelize-cli -g
EXPOSE 3000
ENTRYPOINT [ "npm", "run", "docker" ]

Config.json

Config.json

"docker": {
    "username": "root",
    "password": "ppshein123456",
    "database": "database_docker",
    "host": "db",
    "dialect": "mysql",
    "logging": false
}

但是当我更改为FROM mysql:5而不是FROM mysqlFROM mysql:8时,所有文件都在工作,我遇到了上面提到的错误.请让我知道我需要错过哪种配置?

But everything is working file when I've changed to FROM mysql:5 but FROM mysql or FROM mysql:8, I've encountered above error I've mentioned. Please let me know which kind of configuration do I need to miss it?

推荐答案

我找到了一种解决身份验证问题的方法.我需要在docker-compose文件上添加以下命令--default-authentication-plugin=mysql_native_passwordMYSQL_ROOT_PASSWORD=ppshein123456.

I've found a way to fix that authentication issue. I need to add following command --default-authentication-plugin=mysql_native_password and MYSQL_ROOT_PASSWORD=ppshein123456 on docker-compose file.

command: --default-authentication-plugin=mysql_native_password
restart: always
ports:
    - 3306:3306
environment:
    - MYSQL_ROOT_PASSWORD=ppshein123456
    - MYSQL_ALLOW_EMPTY_PASSWORD=yes

这篇关于NodeJS无法连接到Docker容器内的MYSQL最新版本的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆