尊贵的苹果开发者,在国产化适配时是否很烦恼国产数据库没有提供 MacOS 运行环境下的安装文件?本文将带你在 MacOS 上基于 Docker 容器来运行国产化数据库:人大金仓数据库(Kingbase),其他国产数据库也是可以这样封装的,只不过我暂时没有需要就没有封装。
环境准备
首先,你的 MacOS 上需要安装 Docker,作为开发者的你应该装好了吧,Docker 的安装不是本文的重点,所以就不在此赘述了,默认已经安装好Docker。
然后,在你的 MacOS 上新建一个文件夹,作为数据库的数据目录挂载,要不然 Docker 容器中无法保存我们的数据,我这里新建到了 /opt/kingbase/data,然后要给 Docker 访问这个目录的权限,我直接把 /opt 权限都给 Docker 了,设置的路径是:Preferences -> Resources -> File Sharing:

然后是准备一个 license.dat 文件,这个在官网就可以下载开发版的授权文件,我的 Git 仓库里也有,开发版的授权文件可以解锁所有功能,但是限制连接数10个,开发够用了,注意设置自己的数据库连接池最大连接数就行。
代码仓库
Github:https://github.com/renfei/kingbase-es-v8-r3-docker.git
码云:https://gitee.com/rnf/kingbase-es-v8-r3-docker.git
Gitlab:https://gitlab.com/renfei/kingbase-es-v8-r3-docker.git
构建Docker镜像
打开命令行,cd 到你准备下载的目录下,然后克隆、cd 进目录、开始构建Docker镜像:
git clone https://github.com/renfei/kingbase-es-v8-r3-docker.git
cd kingbase-es-v8-r3-docker
docker build -t kingbase:v8r3 .
如果是国内用户,可以使用我的码云仓库地址:https://gitee.com/rnf/kingbase-es-v8-r3-docker.git,注意最后一步构建Docker镜像,最后有个“点”不要忘记。

启动运行容器
等待构建完成,使用构建的镜像启动运行容器:
docker run -d --name kingbase -p 54321:54321 -e SYSTEM_PWD=SYSTEM -v /opt/kingbase/data:/opt/kingbase/data -v /opt/kingbase/license.dat:/opt/kingbase/Server/bin/license.dat kingbase:v8r3
这里说明一下参数:
-
—name: 容器名称
-
-p: 端口映射
-
-e: 默认用户SYSTEM,通过环境变量SYSTEM_PWD指定初始化数据库时的默认用户密码
-
-v: 挂载宿主机的一个目录,这里挂载了数据目录和license文件
到这里,已经在 MacOS 上基于 Docker 运行起来了 人大金仓 Kingbase 数据库,可以使用客户端去连接了,端口是 54321。

常见问题 Q&A;
FATAL: lock file kingbase.pid already exists
提示:FATAL: lock file kingbase.pid already exists。是因为 docker 容器被关闭了数据库还没来得及停机,我们去数据目录下把 kingbase.pid 文件删除掉即可,数据目录就是上面映射本机目录的,我的教程里是在 /opt/kingbase/data/。
kingbase: superuser_reserved_connections must be less than max_connections
日志提示:kingbase: superuser_reserved_connections must be less than max_connections,并且无法连接数据库。我们还是先去数据目录下找到 kingbase.conf 配置文件,里面有两个:
#superuser_reserved_connections = 10 # (change requires restart)
#super_manager_reserved_connections = 5 # (change requires restart)
我们把前面第一个井号去掉,然后把数字都改成 1 再启动。