如何连接到运行在Docker上的DB2

vc6uscn9  于 2022-11-07  发布在  DB2
关注(0)|答案(2)|浏览(212)

我已经在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任何建议都将被感激!

knsnq2tg

knsnq2tg1#

第一次设置xdb 2容器需要几分钟时间。第二次设置时就不会发生这种情况。运行:

docker run -itd --name xdb2 --privileged=true -p 50000:50000 -e LICENSE=accept -e DB2INST1_PASSWORD=pass1 -e DBNAME=testdb -v /home/user1/volumes/db2:/database ibmcom/db2:11.5.7.0

其中,/home/user1/volumes/db2是将在其中持久保存数据的本地目录。
然后,检查容器是否正常启动:

docker logs -f xdb2

在某个点上(需要一点时间),它显示:Setup has completed.
要停止容器运行,请执行以下操作:

docker stop xdb2

要启动容器运行,请执行以下操作:

docker start xdb2

要使用JDBC进行连接,请执行以下操作:

  • 网址:jdbc:db2://192.168.56.220:50000/testdb:currentSchema=SCHEMA1;
  • 使用者:db2inst1
  • 通过:<password-of-the-os-user>

192.168.56.220以上是运行Docker服务器的主机/IP。

3zwjbxry

3zwjbxry2#

由于身份验证(检查userid和password)是在容器内部进行的(即不在主机上使用Win10),因此必须使用已经在容器内部创建的userid:password组合,例如,根据env文件使用db2inst1。
您还必须引用在容器上创建的数据库名称(例如,根据env文件的testdb)。您不能使用用户名db2admin,除非您在容器中创建了该帐户。

相关问题