【问题标题】:PYODBC + MS SQL SERVER connection with Encrypt=yes not connectingPYODBC + MS SQL SERVER 连接与 Encrypt=yes 未连接
【发布时间】:2020-10-04 23:44:30
【问题描述】:

我们有一个在 aws centos ECS 实例上运行的 python 烧瓶应用程序。我们正在尝试通过 PYODBC 在 Linux 上使用 odbc 17 与我们的数据库建立加密连接。在本地运行时,我们只使用 SQL 服务器驱动程序。目前我们有代码:

params = urllib.parse.quote_plus(driver;server;user;pwd;...;Encrypt=yes)

SQLALCHEMY_DATABASE_URI="mssql+PYODBC:///?odbc_connect=%s" %params

我们在服务器上启用了 tls。该连接在 Windows 上本地工作,但未部署在 Linux 中。 目前使用“yes”而不是“true”进行部署。我们还将尝试使用“trustedserverconnection=yes”。对此过程的任何见解将不胜感激!

更新:最新错误,无效的连接字符串属性 'trustservercertificate'

【问题讨论】:

    标签: python sql-server sqlalchemy odbc pyodbc


    【解决方案1】:

    我们最终实现了第二个连接参数:

    TrustServerCertificate=YES

    显然,这并不理想,因为我们希望有良好的安全实施实践。将来我们需要将此设置为 false 并将我们的 ssl pem 文件放在 Linux ssl 存储中。

    希望这对某人有所帮助。在使用 MS SQL Server 查找 pyodbc 文档时遇到了一些问题。

    【讨论】:

    • 你有什么更新吗?
    【解决方案2】:

    根据this documentation,pyodbc 将连接字符串传递给底层的 ODBC 驱动程序。微软的 文章Using Connection String Keywords with SQL Server Native Client 记录EncryptTrustServerCertificate 属性。 TrustServerCertificate 设置在生产数据库中通常应该避免;但是,在测试与使用自签名证书的开发数据库的加密连接时,它非常有用。例如,SQL Server 的默认安装使用自签名证书,并且需要此设置。

    在我的mssql+pyodbc 连接字符串中,我只是根据需要附加?Encrypt=yes&TrustServerCertificate=yes。请注意,如果您在问号? 后面已有其他设置,请使用& 而不是?,例如:?Trusted_Connection=yes&Encrypt=yes&TrustServerCertificate=yes

    【讨论】:

      猜你喜欢
      • 2017-09-07
      • 2015-08-02
      • 1970-01-01
      • 2018-12-05
      • 1970-01-01
      • 1970-01-01
      • 2021-10-28
      • 2017-01-29
      • 1970-01-01
      相关资源
      最近更新 更多