如何在 docker 上连接到 DB2 运行
How to connect to DB2 running on docker
我已经在本地 Docker 桌面 docker 运行 上安装了映像 ibmcom/db2 10。
按照本指南进行设置:
https://www.ibm.com/docs/en/db2/11.5?topic=system-windows
我能够从 db2 命令提示符查询示例数据库,如下所述:
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
使用“db2server”作为主机需要更长的时间,然后失败并显示以下消息:
[jcc][t4][10380][11951][4.26.14] 必需 属性 “db2server”是未知主机。错误代码=-4222,SQLSTATE=08001
所以,我猜测在 docker 上使用 server/container 的名称作为主机名根本不起作用,因为该名称似乎无法解析。
使用 localhost 似乎工作得更好一些,因为错误消息似乎来自服务器,但我不知道 username/password 当我知道的那些被拒绝时我应该使用什么。
DBeaver 似乎正在使用 jdbc。
所以问题是:如何从 DBeaver 连接到 docker(同一台机器)上的 db2?
如有任何建议,我们将不胜感激!
由于身份验证(检查用户 ID 和密码)发生在容器内(即不在主机上使用 Win10),您必须使用已经在容器内创建的 userid:password 组合,例如 db2inst1 作为根据您的环境文件。
您还必须引用在容器上创建的数据库名称(例如,根据您的 env 文件的 testdb)。除非您在容器内创建该帐户,否则您不能使用用户名 db2admin。
第一次安装 xdb2 容器需要几分钟时间。第二次不会发生这种情况。 运行:
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:
- URL:
jdbc:db2://192.168.56.220:50000/testdb:currentSchema=SCHEMA1;
- 用户:
db2inst1
- 通过:
<password-of-the-os-user>
上方192.168.56.220
是host/IP,其中docker服务器是运行ning。
我已经在本地 Docker 桌面 docker 运行 上安装了映像 ibmcom/db2 10。
按照本指南进行设置:
https://www.ibm.com/docs/en/db2/11.5?topic=system-windows
我能够从 db2 命令提示符查询示例数据库,如下所述:
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
使用“db2server”作为主机需要更长的时间,然后失败并显示以下消息: [jcc][t4][10380][11951][4.26.14] 必需 属性 “db2server”是未知主机。错误代码=-4222,SQLSTATE=08001
所以,我猜测在 docker 上使用 server/container 的名称作为主机名根本不起作用,因为该名称似乎无法解析。
使用 localhost 似乎工作得更好一些,因为错误消息似乎来自服务器,但我不知道 username/password 当我知道的那些被拒绝时我应该使用什么。
DBeaver 似乎正在使用 jdbc。
所以问题是:如何从 DBeaver 连接到 docker(同一台机器)上的 db2? 如有任何建议,我们将不胜感激!
由于身份验证(检查用户 ID 和密码)发生在容器内(即不在主机上使用 Win10),您必须使用已经在容器内创建的 userid:password 组合,例如 db2inst1 作为根据您的环境文件。
您还必须引用在容器上创建的数据库名称(例如,根据您的 env 文件的 testdb)。除非您在容器内创建该帐户,否则您不能使用用户名 db2admin。
第一次安装 xdb2 容器需要几分钟时间。第二次不会发生这种情况。 运行:
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:
- URL:
jdbc:db2://192.168.56.220:50000/testdb:currentSchema=SCHEMA1;
- 用户:
db2inst1
- 通过:
<password-of-the-os-user>
上方192.168.56.220
是host/IP,其中docker服务器是运行ning。