mysql - Docker MYSQL '[2006] MySQL 服务器已经消失'
问题描述
我对mysql服务器有一点问题。我创建了我的 docker-compose.yml,但是当我想访问 phpMyAdmin (localhost:8080) 时,出现了一条错误消息:“phpMyAdmin 试图连接到 MySQL 服务器,并且服务器拒绝了连接。请检查配置中的主机、用户名和密码的值,并确保它们与 MySQL 服务器管理员提供的信息相匹配”。
这是我的 docker-compose 文件,感谢您帮助我
version: '2'
services:
apache:
image: rafaelcgstz/magento2
# build: .
ports:
- 80:80
- 9001:9000
# - "35729:35729" # live reload
volumes:
- ./src:/var/www/html
- ~/.composer:/var/www/.composer
- ~/.npm:/var/www/.npm
# - ~/.nvm:/var/www/.nvm
environment:
XDEBUG_CONFIG: "remote_host=localhost"
PHP_IDE_CONFIG: "serverName=Docker"
depends_on:
- db
links:
- db
networks:
- magento-network
db:
image: mariadb
ports:
- 3300:3306
environment:
- MYSQL_ROOT_PASSWORD=root
- MYSQL_DATABASE=magento
- MYSQL_USER=magento
- MYSQL_PASSWORD=magento
volumes:
- dbdata:/var/lib/mysql
networks:
- magento-network
phpmyadmin:
image: phpmyadmin/phpmyadmin
environment:
- PMA_HOST=db
- PMA_USER=root
- PMA_PASSWORD=root
- MYSQL_ROOT_PASSWORD=root
ports:
- 8080:80
networks:
- magento-network
redis:
image: redis
ports:
- 6379
networks:
- magento-network
redis-session:
image: redis
ports:
- 6379
networks:
- magento-network
mailhog:
image: mailhog/mailhog
ports:
- 1025:1025
- 8025:8025
networks:
- magento-network
networks:
magento-network:
driver: bridge
volumes:
dbdata:
driver: local
解决方案
似乎您在mariadb
服务定义中有错字:
ports:
- 3300:3306
您配置了端口映射,以便可以访问容器,3300
但您没有将此信息传递给 PHPMyadmin。结果,连接尝试超时。
旁注:您根本不需要为数据库公开端口 - 其他容器将使用 Docker 的虚拟网络与它进行通信,并且您可以使用本地访问docker container -it exec <container-id> mysql...
或docker-compose exec db mysql...
推荐阅读
- jquery - jquery 在本地工作正常,但不是 heroku
- android - android通知通道声音不起作用
- javascript - Ajax 调用返回未定义的数据(尝试接收 mysql 行时)
- javascript - 基于无线电选择的 Javascript 重定向
- postman - Postman Monitor 未能通过本地所有测试的请求
- python - 在 python 3 中以二进制模式打开带有通用换行符的文件
- javascript - 额外的行出现在网格/表格中
- ios - 我将地图设置为旋转到用户位置。如何允许用户与地图交互?
- ios - didSelectRowAt 不适用于我的 UITableViewController
- c# - 使用 Cookie 在 Web API 中配置域