最近,我的Docker容器拒绝连接。过去效果很好,这个问题是新问题,到目前为止没有任何解释。
停止并重新启动容器无效。
停止并重新启动Mac版Docker for Desktop无效。
我只能通过重新启动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地址进行变体
我的my.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问题时如何进行调试。
答案 0 :(得分:1)
可能存在一个安全限制,阻止了来自 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