如何解决无法连接到MySQL Docker容器中的MySQL服务?
因此,我有一个MySQL docker容器,在该容器上运行脚本以将其写入数据库,但是当我执行脚本时,脚本将抛出
mysql.connector.errors.DatabaseError: 2003 (HY000): Can't connect to MySQL server on '127.0.0.1' (111)
我必须在Dockerfile中启动MySQL服务吗?
docker-compose.yml:
version: '3.3'
services:
db:
build: .
restart: always
environment:
MYSQL_ROOT_PASSWORD: test
MYSQL_DATABASE: test
MYSQL_USER: test
MYSQL_PASSWORD: test
volumes:
- ./db_data:/docker-entrypoint-initdb.d
解决方法
首先,您需要公开MySQL端口3306
或为MySQL设置的任何其他端口
然后您可以从commmand
参数获得帮助。
工作示例如下:
version: '3.1'
services:
db:
image: mysql
container_name: mysql_test
command: --default-authentication-plugin=mysql_native_password
restart: always
environment:
MYSQL_ROOT_PASSWORD: root_password
MYSQL_DATABASE: test
MYSQL_USER: test_user
MYSQL_PASSWORD: test_password
ports:
- 30001:3306
expose:
- 30001
volumes:
- my-db:/var/lib/mysql
networks:
- test
networks:
test:
volumes:
my-db:
driver: local
使用此示例代码,您将可以从主机将localhost:30001
与mysql_test:3306
连接到数据库,并从同一网络中的其他容器将其连接到数据库。
如果要在主机中执行脚本,则需要导出端口3306
version: '3.3'
services:
db:
build: .
restart: always
environment:
MYSQL_ROOT_PASSWORD: test
MYSQL_DATABASE: test
MYSQL_USER: test
MYSQL_PASSWORD: test
ports:
- 3306:3306
volumes:
- ./db_data:/docker-entrypoint-initdb.d
如果您要在docker内部执行(例如,使用docker exec),请使用docker ps
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。