.NET 6 WebAPI无法连接Docker中MySQL数据库的问题求助
解决.NET 6 WebAPI无法连接Docker中MySQL容器的问题
以下是具体排查和解决方向:
1. 修正MySQL容器的绑定地址配置
Docker中的MySQL默认可能仅绑定容器内部的127.0.0.1,导致主机的.NET程序无法通过映射端口访问。需确保MySQL允许所有IP连接:
- 在Docker Compose的MySQL服务配置中,添加命令参数修改绑定地址:
services: mysql: image: mysql:latest command: --bind-address=0.0.0.0 ports: - "3307:3306" # 其余配置如环境变量、挂载卷等保持不变
2. 调整.NET连接字符串格式
确认连接字符串的语法正确性,若容器MySQL未配置SSL,需显式关闭SSL模式:
server=localhost;port=3307;user=root;password=******;database=armedia;SslMode=none;
也可尝试合并主机与端口的写法:
server=localhost:3307;user=root;password=******;database=armedia;SslMode=none;
3. 升级.NET项目的MySQL驱动
确保使用最新版的MySqlConnector NuGet包(替代旧版MySql.Data),旧驱动可能存在Docker环境兼容性问题:
Install-Package MySqlConnector -Version latest
4. 检查容器内MySQL用户权限
确认连接用的root用户拥有从外部主机连接的权限,进入MySQL容器执行SQL:
GRANT ALL PRIVILEGES ON armedia.* TO 'root'@'%' IDENTIFIED BY '******'; FLUSH PRIVILEGES;
5. 排查主机端口与防火墙
- 验证3307端口未被其他进程占用:
sudo lsof -i :3307 - 临时关闭Linux Mint防火墙测试连通性:
sudo ufw disable
内容的提问来源于stack exchange,提问作者Simone Cimini
相关产品推荐
相关产品推荐

