无法登录到docker中的mysql容器

12 浏览
0 Comments

无法登录到docker中的mysql容器

我正在尝试设置一个包含1个node.js服务器和1个mysql数据库的应用程序,并尝试将其与docker集成。我在尝试从我的node.js应用程序登录到mysql时遇到了问题。简而言之 - 这是我的docker-compose.yml文件:

版本:'2.1'

服务:

db:

构建:./db

重启:always

环境:

#- MYSQL_ALLOW_EMPTY_PASSWORD=yes

- MYSQL_DATABASE=subscriptions

- MYSQL_PASSWORD=supersecretpassword

- MYSQL_ROOT_PASSWORD=supersecretpassword

- MYSQL_USER=root

健康检查:

测试:["CMD", "mysqladmin","ping","-h","localhost"]

间隔:30秒

超时:1秒

重试次数:1

subscription_api:

构建:./subscription_api_server

重启:always

依赖项:

db:

条件:service_healthy

端口:

- "5000:5000"

我的MySQL的Dockerfile:

CREATE DATABASE IF NOT EXISTS subscriptions;

授予root@localhost的所有特权的密码为'supersecretpassword'的所有特权;

刷新权限;

我的node.js应用程序使用sequelize作为ORM,连接字符串在这里指定config.js

"development":{

"username":"root",

"password":"supersecretpassword",

"database":"subscriptions",

"host":"db",

"dialect":"mysql"

},

当我运行docker-compose up时,我从我的node.js应用程序得到以下错误:

subscription_api_1 | Sequelize CLI [Node:10.12.0,CLI:5.1.0,ORM:4.39.0]

subscription_api_1 |

subscription_api_1 | 加载配置文件“config / config.json”。

subscription_api_1 | 使用环境“development”。

subscription_api_1 | 2018年10月14日星期日GMT 17:50:17 sequelize已弃用基于字符串的运算符,现在不再推荐使用。请使用基于符号的运算符以获得更好的安全性,请参阅http://docs.sequelizejs.com/manual/tutorial/querying.html#operators的node_modules/sequelize/lib/sequelize.js:242:13

subscription_api_1 |

subscription_api_1 | 错误:客户端不支持服务器请求的身份验证协议;请考虑升级MySQL客户端

但是当我尝试直接通过ssh登录到我的docker容器时,用户名/密码有效:

sudo docker exec -it fullstack-dev-assignment_db_1 bash

root@d36f499b706e:/# mysql -u root -p

输入密码:

错误1045(28000):用户'root'@'localhost'的访问被拒绝(使用密码:YES)

root@d36f499b706e:/# mysql -u root -p

输入密码:

欢迎使用MySQL监视器。命令以;或\ g结束。

我在设置sequelize时做错了吗?

0
0 Comments

无法登录到Docker中的MySQL容器

问题出现的原因是MySQL 8.0现在使用的默认身份验证插件与sequelize使用的社区Node.js驱动程序不兼容。

要解决这个问题,可以按照这里描述的步骤进行操作。

在你的情况下,除了授予权限之外,还需要先切换用户的身份验证插件。

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'supersecretpassword';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;

0