如何从UTM虚拟机内的SSMS连接Mac上Docker部署的SQL Server?
解决UTM虚拟机内SSMS连接Mac Docker中SQL Server的问题
一、先验证网络连通性
- 获取Mac的本地IP:在Mac终端执行
ipconfig getifaddr en0(无线网卡用en0,有线网卡用en1),得到类似192.168.1.100的地址 - 在Windows虚拟机的命令提示符中执行
ping 192.168.1.100,如果不通:- 检查UTM虚拟机的网络设置:进入虚拟机配置-网络,选择「桥接」模式,接口选当前Mac正在使用的网卡(如Wi-Fi),重启虚拟机后再试
二、确认Docker SQL Server的端口映射
- 执行
docker ps查看容器的PORTS列,必须显示类似0.0.0.0:1433->1433/tcp,这表示容器的1433端口已映射到Mac的1433端口 - 如果没有映射,重新启动容器时添加端口映射参数:
docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=YourStrongPass123!" -p 1433:1433 -d mcr.microsoft.com/mssql/server:latest(替换密码为你自己的强密码)
三、确保SQL Server允许远程连接
- 进入SQL Server容器:
docker exec -it <容器ID或名称> bash - 登录SQL Server:
/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P <你的SA密码> - 执行以下SQL开启远程访问:
EXEC sp_configure 'remote access', 1; RECONFIGURE; GO EXEC sys.sp_configure N'remote query timeout', N'600'; RECONFIGURE WITH OVERRIDE; GO - 确保TCP/IP协议启用:执行
/opt/mssql/bin/mssql-conf set network.tcp_enabled on,然后重启容器docker restart <容器ID或名称>
四、SSMS的正确连接参数
- 服务器名称:填写
tcp:<Mac的本地IP>,1433,比如tcp:192.168.1.100,1433(不要用Docker容器的内部IP,比如172.17.0.2,虚拟机无法直接访问Docker内部网段) - 身份验证:选择「SQL Server身份验证」
- 登录名:
SA - 密码:启动容器时设置的
SA_PASSWORD
五、排查防火墙限制
- Mac端:打开系统设置-网络-防火墙,点击「选项」,确认允许Docker相关进程的入站连接,或临时关闭防火墙测试连接
- Windows虚拟机端:临时关闭Windows Defender防火墙的「专用网络」和「公用网络」选项,测试是否能连接
内容的提问来源于stack exchange,提问作者mage j lewis
相关产品推荐
相关产品推荐

