【发布时间】:2021-12-14 00:34:56
【问题描述】:
我通过 docker-compose.yml 在 docker 容器中创建了本地 MySQL 数据库
version: '3.6'
services:
mysql:
environment:
- MYSQL_DATABASE=test
- MYSQL_ROOT_PASSWORD=changeme
- MYSQL_USER=dbuser
- MYSQL_PASSWORD=changeme
command:
- --table_definition_cache=100
- --performance_schema=0
- --default-authentication-plugin=mysql_native_password
- --innodb_use_native_aio=0
volumes:
- ./init:/docker-entrypoint-initdb.d
container_name: mysqldb
image: mysql
它工作正常 - 我可以进入 docker 容器,以 root 用户(或 dbuser)身份登录并创建数据库、表、执行查询等。我还有 Nest.js 应用程序,它使用 @nestjs/typeorm 模块连接到使用以下 ormconfig.json 的数据库:
{
"type": "mysql",
"host": "localhost",
"port": 3306,
"username": "dbuser",
"password": "changeme",
"database": "test",
"synchronize": true,
"entiries": ["src/**/*/entity.ts"]
}
这就是问题所在 - 当我启动应用程序时出现以下错误:
Error: ER_ACCESS_DENIED_ERROR: Access denied for user 'dbuser'@'172.22.0.1' (using password: YES)
似乎 ormconfig.json 中的所有数据都是正确的 - 为什么我的应用程序无法连接到数据库?
【问题讨论】:
-
您是否在
docker-compose.yml文件中公开了您的端口? -
我认为 3306 是默认端口,否则我会收到拒绝连接错误,而不是拒绝用户访问。 docker ps 也显示在端口 3306/tcp、33060/tcp 下
标签: mysql docker docker-compose nestjs typeorm