Docker安装人大金仓KingbaseES 8.6.8.14 与GIS插件,以及DBeaver的连接教程

官方文档安装教程:https://help.kingbase.com.cn/v8/install-updata/install-docker/install-docker-1.html#p

下载安装包

注意:

  • 镜像包版本与GIS插件版本要一致,我这里安装的是V008R006C008B0014,其他版本的插件包可能得找客服或者QQ群或者网上再找找。
  • 授权文件建议下载企业版的,只有企业版和专业版支持扩展GIS,其他版本不支持,且所有版本默认都不带GIS的需要自己安装。

Docker镜像下载地址:KES-电科金仓官网

GIS插件包:链接: https://pan.baidu.com/s/1M5nGvdzV1wCbnYntQH2sOg 提取码: s999

授权文件下载:KES-电科金仓官网

安装步骤

1.加载镜像包

加载镜像包:docker load -i /data/upload_file/kdb_x86_64_V008R006C008B0014.tar

查看镜像是否存在:docker images|grep kingbase

创建挂载路径:mkdir /mnt/kingbase8

挂载路径授权:chmod -R 755 /mnt/kingbase8/

2.启动容器

注意:

  • 支持mysql、pg、oracle三种兼容模式
  • mysql模式不支持GIS安装,如果要使用GIS的建议使用pg模式
  • pg模式需要指定 ENABLE_CI=no ,不然会因为大小写敏感问题而启动不了数据库

完整启动命令:

pg模式启动:docker run -tid --privileged -p 54321:54321 -v /mnt/kingbase8:/home/kingbase/userdata/ -e NEED_START=yes -e DB_USER=kingbase -e DB_PASSWORD=123456 -e DB_MODE=pg -e ENABLE_CI=no --name kingbase kingbase_v008r006c008b0014_single_x86:v1 /usr/sbin/init

启动选项可以查看官方文档:2. 安装详解 — KingbaseES产品手册

查看启动日志,如果没什么报错信息,看到“server started”,说明启动成功:

docker logs kingbase

3.授权

查找授权文件路径:find / -name license.dat

解压授权文件压缩包,将授权文件拷贝进去:

docker cp /data/upload_file/yxm/license_29296_0.dat kingbase:/home/kingbase/install/kingbase/etc/

进去容器里面,将自带的授权文件重命名,改成新上传的授权文件:

docker exec -it kingbase /bin/bash

cd /home/kingbase/install/kingbase/etc/
mv license.bat license.dat_init
mv license_29296_0.dat license.dat
exit

不确定授权后用不用重启,不放心的可以 docker restart kingbase 重启一下

4.验证安装成功与否

进入容器,用ksql连接数据库,查看当前版本,如果能正常连接并查看版本就说明安装成功了:

docker exec -it kingbase /bin/bash

ksql -Ukingbase -p54321

select version();

5.安装GIS插件

前面也说了,目前mysql模式不支持gis功能,所以如果需要gis,则安装的时候要使用pg或者oracle模式,pg模式下还需要设置ENABLE_CI=no,如果你不是照着我的教程操作的话,建议先检查一下,如查看数据库兼容模式:show database_mode;

题外话,在官方社区里看到下面内容,也许对有些人有帮助,贴一下:

金仓数据库KIngbaseES sqlserver 模式安装gis 扩展,安装扩展前需要执行 set default_sql_parser=pg;
如果是 3.4 版本的gis 还需要设置 set enable_sqlserver_datatype = off;

解压GIS插件包,将里面的lib、bin、share目录里的内容复制到docker容器的对应位置,注意是复制,不是覆盖:

docker cp /data/upload_file/license_29296_0.dat kingbase:/home/kingbase/install/kingbase/etc/
docker cp /data/upload_file/postgis-3.1.2/lib/. kingbase:/home/kingbase/install/kingbase/lib/
docker cp /data/upload_file/postgis-3.1.2/bin/. kingbase:/home/kingbase/install/kingbase/bin/
docker cp /data/upload_file/postgis-3.1.2/share/extension/. kingbase:/home/kingbase/install/kingbase/share/extension/

进入容器,连接数据库:ksql -Ukingbase -p54321

执行以下命令安装gis(好像可以不用全部执行,我是全部执行了的):

说明,gis安装只是安装到当前数据库,如果不是当前数据库使用gis要先创建并切换数据库,后面有提到

CREATE EXTENSION postgis;
CREATE EXTENSION postgis_raster;
CREATE EXTENSION postgis_sfcgal;
CREATE EXTENSION fuzzystrmatch;
CREATE EXTENSION postgis_tiger_geocoder;
CREATE EXTENSION postgis_topology;
CREATE EXTENSION address_standardizer;
CREATE EXTENSION address_standardizer_data_us;

6.验证GIS功能

这步可以参考官方文档关于GIS的部分:4. 数据管理和查询 — KingbaseES产品手册

-- 创建带地理位置数据的数据表
CREATE TABLE global_points (
id SERIAL PRIMARY KEY,
name VARCHAR(64),
location GEOGRAPHY(POINT,4326)
);
-- 创建索引
CREATE INDEX global_points_gix ON global_points USING GIST ( location );
-- 插入测试数据
INSERT INTO global_points (name, location) VALUES ('Town', ST_GeographyFromText('SRID=4326; POINT(-110 30)') );
INSERT INTO global_points (name, location) VALUES ('Forest', ST_GeographyFromText('SRID=4326;POINT(-109 29)') );
INSERT INTO global_points (name, location) VALUES ('London', ST_GeographyFromText('SRID=4326;POINT(0 49)') );
-- 查询测试,如查询距离指定的点1000公里以内的地点(location)的名称
SELECT name FROM global_points WHERE ST_DWithin(location, ST_GeographyFromText('SRID=4326;POINT(-110 29)'), 1000000);

DBeaver连接

参考文档:https://icode.best/i/026383377944225

大概就是,在dbeaver顶部工具栏找到 数据库-驱动管理器 ,点击“新建”按钮,填写以下内容:

com.kingbase8.Driver
jdbc:kingbase8://{host}[:{port}]/[{database}]

在这里插入图片描述

然后,点击上方选项卡“库”,添加驱动文件,驱动文件可以在官网下载,JDBC那个就是了,注意选择版本:KES-电科金仓官网

到这就完成了,之后正常创建连接即可。

创建数据库、用户并授权

-- 创建dapeng专用用户、数据库并授予相关权限
CREATE USER hello WITH PASSWORD 'zhisuan2018';

create database hellodb
WITH 
OWNER = kingbase 
ENCODING = 'UTF8'
LC_COLLATE = 'zh_CN.UTF-8'
LC_CTYPE = 'zh_CN.UTF-8'
TEMPLATE = template0;

GRANT CONNECT ON DATABASE hellodb TO hello;
-- 授予public模式中现有表的所有权限
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO hello;
-- 授予public模式中现有序列的所有权限
GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public TO hello;
-- 授予public模式中现有函数的所有权限
GRANT ALL PRIVILEGES ON ALL FUNCTIONS IN SCHEMA public TO hello;

-- 授予未来创建表的权限,需要连接到目标数据库执行
ALTER DEFAULT PRIVILEGES IN SCHEMA public 
GRANT ALL PRIVILEGES ON TABLES TO hello;
ALTER DEFAULT PRIVILEGES IN SCHEMA public 
GRANT ALL PRIVILEGES ON SEQUENCES TO hello;
ALTER DEFAULT PRIVILEGES IN SCHEMA public 
GRANT ALL PRIVILEGES ON FUNCTIONS TO hello;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值