1-KingbaseES V009R003C011 二进制安装-人大金仓数据库 : 连接
使用 Docker Compose 部署人大金仓(KingbaseES)数据库并设置为 PGSQL 模式,主要分为下载镜像、编写配置文件和启动服务三个步骤。以下是详细的操作指南:
1. 获取并导入镜像
人大金仓的 Docker 镜像并未上架到 Docker Hub 等公共仓库,您需要前往人大金仓官方下载中心(需注册登录)下载对应系统架构的 .tar 镜像包。
从官网下载,服务与支持,下载链接:
https://www.kingbase.com.cn/download.html#database
版本号,VO09R003C011
openEuler22.03

下载完成后,在终端执行以下命令将镜像导入到本地 Docker 中:
docker load -i kdb_x86_64_V008R006C008B0020.tar
(注:请将 kdb_x86_64_V008R006C008B0020.tar 替换为您实际下载的镜像文件名)
2. 编写 docker-compose.yml
在您的工作目录下创建一个 docker-compose.yml 文件。为了开启 PGSQL 兼容模式,关键在于环境变量 DB_MODE 的配置:
services:
kingbase:
# 替换为您导入镜像后实际显示的镜像名称和标签
image: kingbase_v008r006c008b0020_single_x86:v1
container_name: kingbase_db
restart: unless-stopped
privileged: true
environment:
# 设置为 pg 模式,实现 PostgreSQL 语法兼容
- DB_MODE=pg
- ENABLE_CI=no
- NEED_START=yes
# 设置初始化的超级用户和密码
- DB_USER=system
- DB_PASSWORD=Kingbase123
volumes:
# 将容器内数据目录挂载到宿主机,确保数据持久化
- ./kingbase_data:/home/kingbase/userdata
ports:
# 将容器内的 54321 端口映射到宿主机的 5432 端口
- "60001:54321"
权限配置:
mkdir -p ./kingbase_data chmod -R 777 ./kingbase_data

核心配置说明:
DB_MODE=pg:此参数用于指定数据库的兼容模式,设置为pg即代表 PostgreSQL 模式(其他可选值包括oracle、mysql等)。- 端口映射:人大金仓默认服务端口为
54321,这里将其映射到宿主机的5432端口,方便您使用常规的数据库客户端工具进行连接。 - 数据持久化:必须将容器内的
/home/kingbase/userdata目录挂载出来,否则容器重启或删除后数据将会丢失。
3. 启动与验证
在 docker-compose.yml 所在的目录下,执行以下命令启动数据库:
docker-compose up -d
启动成功后,您可以使用 DBeaver、Navicat 等数据库管理工具进行连接测试:
- 主机:localhost
- 端口:5432
- 用户名:system
- 密码:Kingbase123
日常运维提示:
- 停止服务:
docker-compose stop - 重启服务:
docker-compose restart - 停止并删除容器(挂载卷内的数据不会丢失):
docker-compose down
4 先测试数据库是否可以正常连接:
先测试数据库是否可以正常连接: # 在宿主机上测试连接 docker exec -it kingbase_db bash # 在容器内切换到 kingbase 用户 su - kingbase 需要密码,但是不知道密码。 # 尝试连接数据库 ksql -U system -d test # 5. 在 ksql 中执行 SQL \l # 列出数据库 \dt # 列出表 SELECT version(); # 查看版本 \q # 退出 ksql # 检查容器状态 docker ps | grep kingbase # 查看数据库版本 docker exec -it kingbase_db ksql -U system -d template1 -c "SELECT version();" # 创建测试数据库 docker exec -it kingbase_db ksql -U system -d template1 -c "CREATE DATABASE test_db;" # 连接测试数据库 docker exec -it kingbase_db ksql -U system -d test_db -c "SELECT current_database();"
阿萨德分公司
5 使用 Navicat for PostgreSQL
人大金仓(KingbaseES)基于 PostgreSQL 开发,因此可以使用 Navicat for PostgreSQL 来连接。
由于人大金仓兼容 PostgreSQL 协议,选择 PostgreSQL 类型进行连接:
连接参数:
主机(Host): 172.16.2.23(你的服务器 IP)或 localhost(如果在本地)
端口(Port): 5432(根据 docker-compose.yaml 的映射)
初始数据库(Database): template1 或 test
用户名(Username): system(根据 docker-compose.yaml 配置)
密码(Password): Kingbase123(根据 docker-compose.yaml 配置)
在连接之前,需要确认人大金仓的配置允许远程访问:
# 进入容器
docker exec -it kingbase_db bash
# 切换到 kingbase 用户(如果当前是 root)
su - kingbase
# 检查 kingbase.conf 中的监听配置
cat /home/kingbase/userdata/data/kingbase.conf | grep listen_addresses
# 应该显示:
# listen_addresses = '*' 或者 listen_addresses = '0.0.0.0'
如果 `listen_addresses` 不是 `*` 或 `0.0.0.0`,需要修改:
# 编辑配置文件
vi /home/kingbase/userdata/data/kingbase.conf
# 找到并修改:
listen_addresses = '*'
# 保存退出后重启数据库
sys_ctl -D /home/kingbase/userdata/data restart
3. 配置 sys_hba.conf 允许远程连接
# 编辑认证配置文件
vi /home/kingbase/userdata/data/sys_hba.conf
# 添加以下行(在文件末尾):
# 允许所有 IP 使用密码认证
host all all 0.0.0.0/0 md5
# 或者只允许特定网段
host all all 192.168.1.0/24 md5

然后重启数据库:
sys_ctl -D /home/kingbase/userdata/data restart
在宿主机上测试(使用 ksql 客户端)
docker exec -it kingbase_db ksql -h localhost -p 54321 -U system -d template1

6 授权:
不授权 没法用,

下载 什么版本都可以, 然后挂载进去。
# 挂载 License 文件
- ./license.dat:/home/kingbase/install/kingbase/etc/license.dat:ro
查询licens 信息:
-- 1. 获取 License 基本信息(最重要)
SELECT get_license_info();
-- 2. 获取 License 剩余有效天数
SELECT get_license_validdays();
-- 3. 获取并行备份授权状态
SELECT get_license_paralleldump();
-- 4. 获取安全 MAC 授权状态
SELECT get_license_safemac();
-- 5. 获取 RMAN 备份授权状态
SELECT get_license_rman();

默认90天授权。
欢迎来撩 : 汇总all
