我有一个Dockerfile,稍后我想将一些初始SQL转储放入其中:
FROM mysql:debian
EXPOSE 3306
ENTRYPOINT ["docker-entrypoint.sh"]
CMD ["mysqld"]
然后是我的docker-compose.yaml
:
version: '3'
services:
mysql:
container_name: ${CONTAINER_NAME}
build:
context: .
restart: always
environment:
- MYSQL_ROOT_PASSWORD=${ROOT_PASSWORD}
- MYSQL_USER=${MYSQL_USER}
- MYSQL_PASSWORD=${MYSQL_PASSWORD}
- MYSQL_DATABASE=${MYSQL_DATABASE}
我可以很好地将docker exec -it sqlcontainer mysql -uroot -p
放入我的容器中(也可以使用$MYSQL_USER
),但是当我试图从外部做同样的事情时,例如。对于mysql -uroot -p
,我总是得到ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
。
我已经失去理智了。我做错了什么?与容器内的mysqld
的通信显然可以工作,否则我不会得到任何响应。
我在Windows上,如果这对任何人都是一个提示。但上面的情况对PowerShell、CMD甚至Git Bash都是如此。
1条答案
按热度按时间zz2j4svz1#
承认这是令人尴尬的,但评论者@RiggsFolly和@DavidMaze都说得对:我已经很久没有在我的机器上使用MySQL了。当我检查任务管理器时,我确实发现一个本地mysqld已经在运行了,当然它是用不同的凭证启动的。在终止进程(并在compose文件中添加缺少的端口)之后,我能够连接到我的容器化示例。
希望这能帮助将来福尔斯同样陷阱的人。