NodeJS无法连接到Docker容器内的MYSQL最新版本

NodeJS无法连接到Docker容器内的MYSQL最新版本,mysql,node.js,docker,docker-compose,Mysql,Node.js,Docker,Docker Compose,NodeJS无法连接到MySQL最新版本或8以后的版本,并遇到以下错误消息: 错误:connect econnrefuse172.21.0.2:3306 这是我的docker撰写文件 version: '2.1' services: db: build: ./db networks: - ppshein environment: - MYSQL_ALLOW_EMPTY_PASSWORD=yes healthc

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

错误:connect econnrefuse172.21.0.2:3306

这是我的docker撰写文件

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:
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" ]
这里是db 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

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:
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

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

但当我从mysql:5改为
,但从mysql改为
或从mysql:8改为
时,我遇到了上面提到的错误。请告诉我需要哪种配置才能错过它?

MySQL 8默认使用新的SHA256加密密码,而您的连接器可能不使用该密码。您可以将连接器更新为理解SHA256的连接器,或者将正在使用的帐户上的密码更改为使用MySQL本机密码(旧的默认密码)

我找到了一种解决该身份验证问题的方法。我需要在
docker compose
文件中添加以下命令
--默认身份验证插件=mysql\u native\u password
mysql\u ROOT\u password=ppshein123456

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

你能推荐一些这样的例子吗?创建用户“jeffrey”@“localhost”,通过“password”用mysql_native_密码标识;