我已经在Windows 10上的本地Docker桌面上运行的Docker上安装了ibmcom/db2映像。
按照本指南进行设置:
https://www.ibm.com/docs/en/db2/11.5?topic=system-windows
我能够从db2命令提示符查询示例DB,如下所述:
https://www.ibm.com/docs/en/db2/11.5?topic=windows-testing-your-db2-community-edition-docker-image-installation-systems
.end_list配置文件中的参数为:
LICENSE=accept
DB2INSTANCE=db2inst1
DB2INST1_PASSWORD=password
DBNAME=testdb
BLU=false
ENABLE_ORACLE_COMPATIBILITY=false
UPDATEAVAIL=NO
TO_CREATE_SAMPLEDB=false
REPODB=false
IS_OSXFS=false
PERSISTENT_HOME=false
HADR_ENABLED=false
ETCD_ENDPOINT=
ETCD_USERNAME=
ETCD_PASSWORD=
我使用以下命令启动了服务器:
docker run -h db2server --name db2server --restart=always --detach --privileged=true -p 50000:50000 --env-file .env_list -v C:/Kode/Docker/db2:/database ibmcom/db2
这很好,但我需要从DBeaver连接。
我试过这些参数:
Host: localhost / db2server
Port: 50000
Database: sample
Username: db2admin
Password: db2admin / DB2INST1_PASSWORD from config file
如果使用“localhost”作为主机,则会立即失败,并显示以下消息:[jcc][t4][2013][11249][4.26.14]连接授权失败。
原因:用户ID或口令无效。错误代码= -4214,SQLSTATE=28000
如果使用“db2 server”作为主机,则需要花费更长的时间,然后失败,并显示以下消息:[jcc][t4][10380][11951][4.26.14]所需属性“db2 server”是未知主机。错误代码= -4222,SQLSTATE=08001
因此,我猜测使用Docker上的服务器/容器的名称作为主机名根本不起作用,因为似乎无法解析该名称。
使用localhost似乎效果更好一些,因为错误消息似乎来自服务器,但我不知道当我知道的用户名/密码被拒绝时应该使用什么用户名/密码。
DBeaver似乎在使用JDBC。
所以问题是:我如何从DBeaver连接到Docker(同一台机器)上的DB2?2任何建议都将被感激!
2条答案
按热度按时间knsnq2tg1#
第一次设置xdb 2容器需要几分钟时间。第二次设置时就不会发生这种情况。运行:
其中,
/home/user1/volumes/db2
是将在其中持久保存数据的本地目录。然后,检查容器是否正常启动:
在某个点上(需要一点时间),它显示:
Setup has completed.
个要停止容器运行,请执行以下操作:
要启动容器运行,请执行以下操作:
要使用JDBC进行连接,请执行以下操作:
jdbc:db2://192.168.56.220:50000/testdb:currentSchema=SCHEMA1;
db2inst1
<password-of-the-os-user>
192.168.56.220
以上是运行Docker服务器的主机/IP。3zwjbxry2#
由于身份验证(检查userid和password)是在容器内部进行的(即不在主机上使用Win10),因此必须使用已经在容器内部创建的userid:password组合,例如,根据env文件使用db2inst1。
您还必须引用在容器上创建的数据库名称(例如,根据env文件的testdb)。您不能使用用户名db2admin,除非您在容器中创建了该帐户。