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
时,一切都在工作文件中,我遇到了上面提到的错误。请让我知道我需要错过哪种配置?
答案 0 :(得分:1)
默认情况下,MySQL 8对连接器可能不使用的密码使用新的SHA256加密。您可以将连接器更新为可以理解SHA256的连接器,或者使用MySQL本机密码(较旧的默认密码)将正在使用的帐户的密码更改为一个。
答案 1 :(得分:1)
我找到了一种解决身份验证问题的方法。我需要在public function new(x:Float, y:Float)
文件上添加以下命令<tr>
和document.createDocumentFragment()
。
--default-authentication-plugin=mysql_native_password