【问题标题】:NodeJS could not connect to MYSQL latest version inside Docker ContainerNodeJS 无法连接到 Docker 容器内的 MYSQL 最新版本
【发布时间】:2019-06-20 10:38:37
【问题描述】:

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

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:

这里是 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

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 时,一切正常,我遇到了上面提到的错误。请让我知道我需要错过哪种配置?

【问题讨论】:

    标签: mysql node.js docker docker-compose


    【解决方案1】:

    我找到了解决该身份验证问题的方法。我需要在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
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 你能推荐一些例子吗?
      • CREATE USER 'jeffrey'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
      猜你喜欢
      • 2017-08-10
      • 1970-01-01
      • 1970-01-01
      • 2016-04-26
      • 2016-07-22
      • 2019-04-14
      • 2020-12-30
      • 2020-07-29
      • 1970-01-01
      相关资源
      最近更新 更多