当使用 Docker Compose 部署 MySQL 时遇到依赖版本不一致问题,通常有以下几种解决方案:
This server supports only the latest major version by this minor version
Incompatible server version
Client does not support authentication protocol
在 docker-compose.yml
中明确指定 MySQL 版本,避免使用 latest
标签:
services:
mysql:
image: mysql:8.0.33 # 指定具体版本
environment:
MYSQL_ROOT_PASSWORD: example
确保你的 MySQL 客户端工具(如 MySQL Workbench、命令行工具)与容器中的 MySQL 服务器版本兼容。
对于 MySQL 8.0 及以上版本,可能需要修改认证方式:
services:
mysql:
image: mysql:8.0
command: --default-authentication-plugin=mysql_native_password
environment:
MYSQL_ROOT_PASSWORD: example
当升级 MySQL 版本时,确保正确迁移数据:
services:
mysql:
image: mysql:8.0
volumes:
- mysql_data:/var/lib/mysql
volumes:
mysql_data:
如果其他服务依赖 MySQL,确保它们的版本也兼容:
services:
mysql:
image: mysql:8.0
# ...
app:
image: your-app-image
depends_on:
- mysql
environment:
- DB_HOST=mysql
- DB_PORT=3306
查看 MySQL 容器日志:
docker-compose logs mysql
进入容器检查版本:
docker-compose exec mysql mysql --version
检查客户端版本:
mysql --version
caching_sha2_password
认证插件通过以上方法,你应该能够解决大多数 Docker Compose 部署 MySQL 时的版本依赖问题。