You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker容器部署SQL Server后sqlcmd连接SSL证书验证失败求助

解决Docker中SQL Server外部连接SSL证书验证失败问题

问题场景

  • 创建SQL Server容器命令:
    $ sudo docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=Adminxyz22#" -p 1433:1433 --name sql3  -d mcr.microsoft.com/mssql/server:2022-latest
    bd7603e0df04a9ec23cfb089ee43bf5723ab4f1c881aefaf896c9ef11d2d909f
    
  • 容器状态检查结果:
    $ sudo docker ps -a
    CONTAINER ID   IMAGE                                        COMMAND                  CREATED          STATUS                        PORTS                                            NAMES
    285722569f6e   mcr.microsoft.com/mssql/server:2022-latest   "/opt/mssql/bin/perm…"   9 minutes ago    Exited (0) 6 minutes ago 
    
  • 外部使用sqlcmd连接报错:
    sqlcmd -S localhost,1433 -U SA -P "Adminxyz22#"
    Sqlcmd: Error: Microsoft ODBC Driver 18 for SQL Server : SSL Provider: [error:0A000086:SSL routines::certificate verify failed:self-signed certificate].
    Sqlcmd: Error: Microsoft ODBC Driver 18 for SQL Server : Client unable to establish connection.
    
  • 容器内部使用sqlcmd可正常连接:
    $ sudo docker exec -it bd7603e0df04 /bin/bash
    mssql@bd7603e0df04:/$ /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P "Adminxyz22#"
    1>
    

解决方案

方法1:连接时跳过SSL证书验证(测试环境适用)

在sqlcmd命令中添加-C参数,强制信任服务器自签名证书:

sqlcmd -S localhost,1433 -U SA -P "Adminxyz22#" -C

方法2:配置客户端信任SQL Server自签名证书(生产环境推荐)

  1. 从容器中导出SQL Server的自签名证书:
    sudo docker cp bd7603e0df04:/var/opt/mssql/data/mssql.pem ./mssql.pem
    
  2. 将证书添加到系统信任存储:
    • Linux系统:
      sudo cp ./mssql.pem /usr/local/share/ca-certificates/mssql.crt
      sudo update-ca-certificates
      
    • Windows系统:
      双击mssql.pem文件,通过向导将证书导入「受信任的根证书颁发机构」存储。
  3. 重新执行sqlcmd连接命令即可正常访问。

方法3:确保目标容器处于运行状态

先检查sql3容器的运行状态:

sudo docker ps | grep sql3

如果容器未运行,执行启动命令:

sudo docker start sql3

内容的提问来源于stack exchange,提问作者user51

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 11:52:25