【问题标题】:connect db2 using python with securityMechanism=13使用 python 与 securityMechanism=13 连接 db2
【发布时间】:2020-07-01 12:06:13
【问题描述】:

我正在尝试使用 python 连接 db2,但我不知道如何正确设置 securityMechanism=13 属性,您能告诉我该怎么做吗?

import jaydebeapi

conn_src = jaydebeapi.connect(
    'com.ibm.db2.jcc.DB2Driver',
    'jdbc:db2://host:port/dbname',{"encryptionAlgorithm":"2",'securityMechanism':'13', 'user':'username',"password":'pass'},'',
)

cursor=conn_src.cursor()

错误信息:

com.ibm.db2.jcc.am.SqlExceptionPyRaisable: com.ibm.db2.jcc.am.SqlException:[jcc][t4][10441][12439][3.69.66] 加密算法只能用 securityMechanism 设置 ENCRYPTED_PASSWORD_SECURITY 和 ENCRYPTED_USER_AND_PASSWORD_SECURITY。 ERRORCODE=-4450,SQLSTATE=null

我很乐意使用 ibm_db,但我没有找到设置 securityMechanism=13 的方法。

【问题讨论】:

  • 请编辑您的问题以添加更多事实。哪个 Db2 平台(z/os、i 系列、linux/unix/windows)托管您尝试连接的数据库?如何在目标环境上配置身份验证?您使用的是哪个 jdbc 驱动程序+版本?为什么不能使用 CLIDRIVER 和 ibm_db ?请附上确切错误消息的详细信息。
  • 请编辑您的问题以回答所有所要求的说明
  • 对于在 Linux/Unix/Windows 上运行的 Db2 服务器,带有 clidriver(或 IBM 提供的其他等效项)的 python ibm_db 模块支持具有与该值匹配的 AUTHENTICATION 参数的连接字符串Db2 实例上的参数。

标签: python encryption jdbc db2


【解决方案1】:

尝试通过 Jaydebeapi 连接时收到相同的错误,但是当我尝试使用 ibm_db_dbi 连接时,它可以正常工作。

以下脚本运行良好,无需明确提及“securityMechanism”。

#Header
from ibm_db_dbi import connect

#Connection string
conn_src = connect("DATABASE=<DB_Name>;
                    HOSTNAME=<Host_Name>;
                    PORT=50000;PROTOCOL=TCPIP;
                    UID=<username>;PWD=<password>;", "", "")

【讨论】:

  • OP 担心明确声明 securityMechanism=13,所以如果您能详细说明为什么不需要这种方式会很好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-02-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多