Ubuntu 上的 SQL Server - 重新启动后远程主机强行关闭了现有连接

Rob*_*son 5 sql-server ubuntu connectivity

我已经在 Ubuntu 上运行 SQL Server 一段时间了,一切正常,但我重新启动了服务器,现在与 SQL Server 的所有连接都失败并显示错误:

A connection was successfully established with the server, but then an error occurred during the login process. 
(provider: SSL Provider, error: 0 - 
An existing connection was forcibly closed by the remote host.) 
(Microsoft SQL Server, Error: 10054)
Run Code Online (Sandbox Code Playgroud)

我曾尝试卸载并重新安装 SQL Server,设置各种 mssql-conf 值(自再次删除后)等,但我所做的一切都没有任何区别。

与 Windows 相关的文章似乎指出它与 SSL 相关,但未启用 SSL。我确实尝试启用它并设置了一个证书,但是即使我对证书和私钥 777 授予了权限并授予 mssql 用户/组它只是告诉我它无法读取它然后 SQL Server 无法启动所以我又删除了。

任何人都可以建议我可以做些什么来让它再次工作,因为我没有想法吗?

谢谢罗宾

Daw*_*jee 8

MSSQL 需要 OpenSSL v1.0,而 Ubuntu 18+ 使用 OpenSSL 1.1,导致OpenSSL 版本不匹配。解决方案是将 ssl v1.0 符号链接如下:

  1. 停止 SQL Server

    sudo systemctl stop mssql-server
    
    Run Code Online (Sandbox Code Playgroud)
  2. 打开服务配置的编辑器

    sudo systemctl edit mssql-server
    
    Run Code Online (Sandbox Code Playgroud)
  3. 在编辑器中,将以下行添加到文件中并保存:

    [Service]
    Environment="LD_LIBRARY_PATH=/opt/mssql/lib"
    
    Run Code Online (Sandbox Code Playgroud)
  4. 创建指向 OpenSSL 1.0 的符号链接以供 SQL Server 使用

    sudo ln -s /usr/lib/x86_64-linux-gnu/libssl.so.1.0.0 /opt/mssql/lib/libssl.so
    
    sudo ln -s /usr/lib/x86_64-linux-gnu/libcrypto.so.1.0.0 /opt/mssql/lib/libcrypto.so
    
    Run Code Online (Sandbox Code Playgroud)
  5. 启动 SQL Server

    sudo systemctl start mssql-server
    
    Run Code Online (Sandbox Code Playgroud)