无法使用凭证(作为API或Cloud控制台)连接到IBM_Cloud DB2数据库

时间:2019-07-21 08:06:51

标签: db2 ibm-cloud

我无法在IBM云中或通过Python ibm_db API执行SQL查询。连接被拒绝。

我已经注册了IBM云服务。我能够启动DB2实例并成功创建连接。但是,当我从云内部启动控制台并尝试运行SQL查询时,连接被拒绝。如果我通过Python使用ibm_db API,也会发生相同的拒绝。我已尽力输入了正确的详细信息。但是有一件事,我注意到自动创建的连接密码没有大写字母,并且在某处总是有一个+号。另外,如何更改连接密码?

```python
import ibm_db
#Replace the placeholder values with your actual Db2 hostname, username, and password:
dsn_hostname = "somehostname" # e.g.: "dashdb-txn-sbox-yp-dal09-04.services.dal.bluemix.net"
dsn_uid = "abc12345"        # e.g. "abc12345"
dsn_pwd = "6fabcde57+ghijkl8"      # e.g. "7dBZ3wWt9XN6$o0J"

dsn_driver = "{IBM DB2 ODBC DRIVER}"
dsn_database = "BLUDB"            # e.g. "BLUDB"
dsn_port = "50000"                # e.g. "50000" 
dsn_protocol = "TCPIP"            # i.e. "TCPIP"

dsn = (
    "DRIVER={0};"
    "DATABASE={1};"
    "HOSTNAME={2};"
    "PORT={3};"
    "PROTOCOL={4};"
    "UID={5};"
    "PWD={6};").format(dsn_driver, dsn_database, dsn_hostname, dsn_port, dsn_protocol, dsn_uid, dsn_pwd)


try:
    conn = ibm_db.connect(dsn, "", "")
    print ("Connected to database: ", dsn_database, "as user: ", dsn_uid, "on host: ", dsn_hostname)

except:
    print ("Unable to connect: ", ibm_db.conn_errormsg() )
```

[IBM] [CLI驱动程序] SQL30082N安全处理失败,原因为“ 24”(“用户名和/或密码无效”)。 SQLSTATE = 08001 SQLCODE = -30082

当我尝试通过DB2云控制台运行SQL查询时,也会发生类似错误。

Image describing the error from the IBM cloud DB2 SQL console

谢谢您的时间

2 个答案:

答案 0 :(得分:2)

我遇到了同样的问题。最后我发现,问题出在 Db2 实例本身。尝试删除此实例并在 IBM Cloud 中创建新实例。但是,请确保例如为达拉斯(而非伦敦)选择的位置。并且不要忘记创建新凭据并在您的代码中更新它们。

答案 1 :(得分:0)

我偶然发现了。 每当我启动Db2数据库时,它都会说可能需要一些时间来进行设置。我忽略了它,因为它立即打印出“ provisioned”。那时我曾经直接创建连接并开始使用SQL查询。它没有用。

但是,上次(当它起作用时)我创建了一个Db2实例,然后一两天都无法登录到IBM Cloud。下次登录时,它可以完美地接受SQL查询!我继续并创建了一个连接,以便可以通过本地Jupyter笔记本工作,并且也可以工作。

因此,我想在这种情况下,解决方案是等待,而不是继续创建和删除Db2实例,以希望它开始工作。如果确实如此,IBM员工可以更好地发表评论,但暂时我很高兴。 希望这对将来有所帮助。