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

标签 mysql node.js docker docker-compose

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

错误:连接 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:

这是数据库 Dockerfile

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" ]

配置.json

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

但是当我更改为 FROM mysql:5FROM mysqlFROM mysql:8 时,一切都是工作文件,我'遇到了我提到的上述错误。请让我知道我需要错过哪种配置?

最佳答案

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

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

关于mysql - NodeJS 无法连接到 Docker 容器内的 MYSQL 最新版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54384845/

相关文章:

mysql - 选择没有指定条件的行

mysql - 有没有复杂的select查询来解决这个问题

docker - OpenShift 上的 pgAdmin 使用 RedHat 基本镜像

django - NGINX docker-compose - 在上游 nuxt :3000 中找不到主机

mysql - 处理mysql约束错误

mysql - mysql 存储过程中出现错误#1064

javascript - 使用 React 和 Ant Design 的 float 标签

javascript - 2018 年如何在 AWS Lambda 中访问 header

node.js - 使用 MongoDB 跨多个集合进行基于范围的按时间顺序的分页查询?

docker - 某些容器的 Traefik > "Bad gateway"(错误 502)