gpt4 book ai didi

mysql - 无法连接到 osx 上 docker 内的 mysql

转载 作者:行者123 更新时间:2023-11-29 07:20:10 25 4
gpt4 key购买 nike

最近,我的 docker 容器拒绝连接。它在过去运行良好,这个问题是新的,到目前为止还没有解释。

停止并重新启动容器没有效果。
停止并重新启动 Docker for Desktop for Mac 没有任何效果。

我只能通过重新启动我的 OSX 笔记本电脑来解决它。 (macOS Mojave v 10.14.5)然后它将工作一段时间,然后再次开始阻止连接尝试

我可以执行到容器中,例如

docker exec -it db /bin/bash

从容器内我可以毫无问题地访问 mysql。

我试过在 mysql 中启用通用日志来尝试调试它: 它没有显示任何事件...

我的笔记本电脑有足够的可用磁盘空间(188GB 可用空间)

所有这一切在过去 6 个月内运行良好,但在上周左右的短暂工作后突然开始阻塞连接....

感谢您提供任何线索或想法

这是我的 Dockerfile

FROM mysql:5.7

RUN DEBIAN_FRONTEND=noninteractive apt-get update
RUN DEBIAN_FRONTEND=noninteractive apt-get install -y apt-utils
RUN DEBIAN_FRONTEND=noninteractive apt-get install -y procps
RUN DEBIAN_FRONTEND=noninteractive apt-get install -y debianutils
RUN DEBIAN_FRONTEND=noninteractive apt-get install -y iputils-ping
RUN DEBIAN_FRONTEND=noninteractive apt-get install -y net-tools
RUN DEBIAN_FRONTEND=noninteractive apt-get install -y vim
RUN DEBIAN_FRONTEND=noninteractive apt-get install -y less
RUN DEBIAN_FRONTEND=noninteractive apt-get install -y man
RUN DEBIAN_FRONTEND=noninteractive apt-get install -y sudo

WORKDIR .

COPY ./my.cnf /etc/mysql/my.cnf

#CMD ["mysqld", "--general_log=1", "--log-raw", "--log-error"]
CMD ["mysqld"]

我的 docker-compose 文件:

(MYSQL_DATA_FOLDER 是设置为有效路径的环境变量

version: '3.5'
services:
database:
image: database
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: ""
MYSQL_ALLOW_EMPTY_PASSWORD: "yes"
volumes:
- mydatavolume:${MYSQL_DATA_FOLDER}
build:
context: .

volumes:
mydatavolume:

networks:
default:
name: dev_network
driver: bridge

我是如何启动它的:

docker-compose build; 
docker-compose run --service-ports --volume=$MYSQL_DATA_FOLDER:/var/lib/mysql --name db --rm database

我通常如何连接(通过 osx 终端中的 mysql 客户端)

mysql -h localhost -P 3306 --protocol=tcp -u root

我也尝试过使用 127.0.0.1 的变体以及 docker inspect 显示的 IP 地址

我的.cnf

[mysqld]
sql_mode = ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

尝试添加:

bind-address=0.0.0.0

以上...没有帮助

用户表

mysql> SELECT host, user FROM mysql.user;
+-----------+---------------+
| host | user |
+-----------+---------------+
| % | root |
| % | some_user |
| localhost | mysql.session |
| localhost | mysql.sys |
| localhost | root |
+-----------+---------------+
5 rows in set (0.01 sec)

新信息:

我已经删除了数据卷并让它创建一个新的。现在问题消失了——所以,这似乎是 MySQL 问题而不是 Docker 问题。我仍然想知道如何在出现这种 MySQL 问题时进行调试。

最佳答案

可能存在阻止 root 用户连接的安全限制。您能否尝试创建一个具有必要权限的本地用户,如下所示。

mysql> CREATE USER 'some_user'@'%' IDENTIFIED BY 'some_pass';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'some_user'@'%' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;

重启容器并尝试使用本地用户连接。

mysql -h 127.0.0.1 -u some_user --protocol=TCP -P 3306 -p

关于mysql - 无法连接到 osx 上 docker 内的 mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56677439/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com