如何在Linux服务器的MSSQL Express Docker容器中配置SQL Server网络协议
Linux Docker部署MSSQL Express 预登录握手报错64解决方案
Linux 环境下的 SQL Server 默认已启用 TCP/IP 协议,因此 mssql-conf 工具中没有单独的启用开关配置项,遇到该报错可按以下步骤排查解决:
- 排查Docker端口映射规则
启动容器时需正确将宿主机端口映射到容器1433端口,参考启动命令如下:
若使用非1433的自定义端口,SSMS连接时需用逗号分隔IP和端口,格式为docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=你设置的SA密码" \ -p 1433:1433 --name mssql_express \ -d mcr.microsoft.com/mssql/server:latest服务器IP,自定义端口,不要用冒号分隔。 - 放行RHEL 7服务器端口规则
RHEL 7默认防火墙会拦截1433端口,执行以下命令放通端口:
可临时关闭SELinux验证是否为权限拦截问题:# 永久放通1433端口 firewall-cmd --add-port=1433/tcp --permanent # 重载防火墙规则使其生效 firewall-cmd --reload # 验证端口是否放通成功 firewall-cmd --list-portssetenforce 0 - 调整MSSQL TLS协议兼容配置
新旧版本TLS协议不匹配是该报错的高频诱因,编辑容器内/var/opt/mssql/mssql.conf文件,添加以下配置:
配置修改完成后重启容器生效:[network] tlsprotocols = 1.2,1.1,1.0docker restart mssql_express - 调整SSMS连接加密配置
打开SSMS连接窗口,点击「选项」按钮,切换到「连接属性」标签页,取消勾选「加密连接」选项后重试连接。
内容的提问来源于stack exchange,提问作者Marvin
相关产品推荐
相关产品推荐

