NodeJS не смог подключиться к последней версии MYSQL внутри Docker Container - PullRequest
0 голосов
/ 27 января 2019

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:

Вот дБ 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

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

Но все работает, когда я изменил на FROM mysql:5, но FROM mysql или FROM mysql:8, я столкнулся с вышеуказанной ошибкой. Пожалуйста, дайте мне знать, какую конфигурацию мне нужно пропустить?

Ответы [ 2 ]

0 голосов
/ 27 января 2019

Я нашел способ исправить эту проблему аутентификации.Мне нужно добавить следующую команду --default-authentication-plugin=mysql_native_password и MYSQL_ROOT_PASSWORD=ppshein123456 в файл docker-compose.

command: --default-authentication-plugin=mysql_native_password
restart: always
ports:
    - 3306:3306
environment:
    - MYSQL_ROOT_PASSWORD=ppshein123456
    - MYSQL_ALLOW_EMPTY_PASSWORD=yes
0 голосов
/ 27 января 2019

MySQL 8 по умолчанию использует новое шифрование SHA256 для пароля, который ваш соединитель, вероятно, не использует.Вы можете обновить свой соединитель на тот, который понимает SHA256, или сменить пароль на используемую учетную запись на тот, который использует MySQL Native Password (старый пароль по умолчанию)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...