引言:数据库管理工具与国产数据库的融合趋势
如今数字化转型的脚步越来越快,国产数据库在企业级应用里的地位越来越重要。为啥呢?因为像金仓数据库(KingbaseES)这样的国产数据库,不光性能稳定、架构安全,还特别贴合本土业务的需求,现在已经在金融、政务、能源这些关键行业扎下根了,扛起了海量数据存储和高并发事务处理的大旗。
不过啊,数据库要想跑得顺,离不开好用的管理工具。要是还靠传统的命令行操作,那门槛可太高了,稍不留神输错个语法,运维效率就直线下降。好在 Navicat Premium 这个全球主流的数据库管理工具够给力,跨平台、可视化、功能全,成了连接开发和运维的一把好手。当 Navicat Premium 遇上金仓数据库,就像给国产数据库配上了 "智能导航",不仅补上了可视化管理工具生态的短板,还靠 "工具 + 数据库" 的协同效应,给企业搭起了从数据开发、运维到分析的全流程高效方案,难怪成了国产数据库落地的重要帮手。
一、金仓数据库(KingbaseES)下载与配置
咱这次用的是 KingbaseES V9R1C10 企业版,搭配 CentOS 7.9 操作系统。下面这些下载和配置步骤可得看仔细了,保证数据库环境稳稳妥妥的。
1.1 下载金仓数据库
- 先打开金仓数据库官网(www.kingbase.com.cn/),找到 "产品中心" 里的 "KingbaseES";
- 按照操作系统类型(咱这儿是 CentOS 7.9 64 位),下载对应的企业版安装包(得先注册账号申请试用授权);
- 下载完把安装包(比如
KingbaseES_V9R1C10_Lin64.zip
)和 license 文件一块传到服务器的/home/kingbase
目录下。
1.2 安装前环境准备
-
关防火墙(不然端口被挡住了,后面连不上可就麻烦了):
bash# 先把防火墙服务停了 systemctl stop firewalld # 再设置成开机不自动启动 systemctl disable firewalld
-
装依赖包(缺了依赖装到一半卡住就尴尬了):
bashyum install -y libaio-devel glibc-devel gcc-c++
-
创建用户和组(按金仓的规范,别用 root 用户装):
bash# 先建个kingbase用户组 groupadd kingbase # 再建kingbase用户并加到组里 useradd -g kingbase kingbase # 给用户设个密码 passwd kingbase # 把安装目录的权限也授一下 chown -R kingbase:kingbase /home/kingbase
1.3 执行金仓数据库安装
-
切换到 kingbase 用户,解压安装包:
bashsu - kingbase unzip KingbaseES_V9R1C10_Lin64.zip cd KingbaseES_V9R1C10_Lin64
-
执行安装脚本,要是服务器有图形界面,就用图形化安装;没图形界面就选控制台模式:
bash# 图形化安装(得服务器支持图形界面才行) ./setup.sh # 控制台安装(没图形界面就用这个) ./setup.sh -console
-
安装向导里这几个地方得注意:
- 安装路径 :默认
/opt/kingbase/es/V9R1C10
,建议别改; - 数据库端口 :默认
54321
,后面连接要用,别随便动; - 超级用户密码 :给
system
用户设个密码(比如Kingbase@123
),这密码可得记好咯; - 授权文件:把之前下的 license 文件选上,完成授权验证。
- 安装路径 :默认
-
等安装进度走完,点 "完成" 就装好了。
1.4 验证数据库运行状态
-
启动数据库服务:
bash# 先切换到安装目录的bin文件夹 cd /opt/kingbase/es/V9R1C10/KESRealPro/V009R001C010/Server/bin # 启动服务(指定数据目录,默认在/opt/kingbase/es/V9R1C10/data) ./sys_ctl -D /opt/kingbase/es/V9R1C10/data start
-
检查端口监听(看看 54321 端口是不是被 kingbase 进程占了):
bashnetstat -tlnp | grep 54321 # 正常的话会显示类似这样的信息:tcp 0 0 0.0.0.0:54321 0.0.0.0:* LISTEN 12345/kingbase
-
本地连接测试(用金仓自带的 ksql 命令行工具试试):
bash# 连默认的test数据库,用户是system ./ksql -U system -d test -h 127.0.0.1 -p 54321 # 输完密码要是看到"test=#"的交互界面,就说明数据库没问题 # 再看看数据库版本对不对(确认是不是V9R1C10) SELECT version(); # 正常会显示:KingbaseES V009R001C010
二、Navicat Premium 下载与配置
这次用的是 Navicat Premium V17.3.1(Windows 64 位),这个版本已经正式支持 KingbaseES V8 及以上版本了,下载安装步骤往下看。
2.1 下载 Navicat Premium
- 打开 Navicat 官网(www.navicat.com.cn/),找到 "产品" 里的 "Navicat Premium";
- 点 "下载试用",选 "Windows 64 位" 版本,下载安装包
- 要是浏览器提示文件没验证,别担心,直接点 "保留" 就行,官方下的没风险。
2.2 安装 Navicat Premium
-
双击安装包,弹出 "欢迎安装" 界面,直接点【下一步】;
-
看完许可协议,勾上 "我接受",再点【下一步】;
-
选安装目录 :建议别装 C 盘,自定义个路径(比如
D:\Program Files\Premium Soft\Navicat Premium 17
),点【下一步】; -
额外任务:勾上 "创建桌面快捷方式",以后打开方便,点【下一步】;
-
确认信息没错就点【安装】,等个 1-2 分钟进度条走完;
-
装完点【完成】,勾上 "运行 Navicat Premium" 直接打开软件。
2.3 初始化 Navicat 配置
- 第一次打开 Navicat,会弹出 "试用" 或 "激活" 窗口,选【试用】就行(能免费试用 14 天,所有功能都能用);
- 进主界面后,点顶部菜单栏【工具】→【选项】,简单配置一下:
- 外观:按自己喜好选 "浅色" 或 "深色" 主题;
- SQL 编辑:把 "语法高亮""自动补全" 勾上,后面写 SQL 能省不少事儿;
- 编码:默认 "UTF-8",跟金仓数据库的编码一致,不怕中文乱码;
- 点【确定】保存配置,初始化就完成了。
三、Navicat Premium 连接金仓数据库:实际使用示例与体验
接下来咱从 "连接配置→表设计→数据操作→函数调试→备份恢复" 走一遍全流程,看看 Navicat Premium 和金仓数据库怎么配合干活,顺便感受一下可视化操作到底有多高效。
3.1 连接金仓数据库(关键步骤)
- 新建 KingbaseES 连接 :
- 点 Navicat 主界面左上角【连接】→下拉菜单里找到【KingbaseES】;
- 在 "KingbaseES - 新建连接" 窗口里,按下面的参数填(参考表 1):
参数名称 | 填写内容 | 说明 |
---|---|---|
连接名 | KingbaseES-Test | 自己起个名,方便区分不同的连接 |
主机 | 192.168.1.100(示例) | 金仓数据库服务器的 IP,本地就填 127.0.0.1 |
端口 | 54321 | 金仓数据库的默认端口,跟安装时一样 |
初始数据库 | test | 连接后默认进这个数据库(后面能改) |
用户名 | system | 金仓数据库的超级用户 |
密码 | Kingbase@123(示例) | 安装时给 system 用户设的密码 |
保存密码 | 勾选(本地测试环境) | 要是生产环境,为了安全建议别勾选 |
![]() |
- 测试连接和排错 :
- 点窗口左下角【测试连接】,要是提示 "连接成功",那 Navicat 和金仓数据库就通上了;
- 要是连不上,按这几步查查:
- 先看看服务器 IP 对不对,用
ping 192.168.1.100
试试网络通不通; - 再看看端口开了没,在服务器执行
firewall-cmd --query-port=54321/tcp
,没开就执行firewall-cmd --add-port=54321/tcp --permanent
,然后重启防火墙(systemctl restart firewalld
); - 最后看看密码是不是输错了,注意大小写哦(金仓数据库密码区分大小写)。
- 先看看服务器 IP 对不对,用
- 确认连接成功:点【确定】保存连接,主界面就会出现 "KingbaseES-Test" 连接,双击就能进数据库操作界面了。
(我这里是之前已经创建过了数据库和表,你新创建的应该是空的才对)
3.2 基础操作:可视化创建表与数据管理
以前用命令行建表,得自己写CREATE TABLE
语句,稍不注意字段类型或约束写错了,表就建不起来。现在用 Navicat 的可视化设计功能,拖拖拽拽就能配好,效率简直翻倍。
3.2.1 新建测试数据库(navicat_test)
-
右键点 "KingbaseES-Test" 连接→选【新建数据库】;
-
配置数据库参数(防止中文乱码):
- 数据库名:
navicat_test
; - 所有者:
system
(默认就是当前登录用户); - 模板:
template0
(这样数据库初始化环境更干净); - 编码:
UTF8
;
- 数据库名:
-
点【SQL 预览】,能看到自动生成的建库语句(看看语法对不对):
sql
CREATE DATABASE "navicat_test" WITH OWNER = "system" TEMPLATE = "template0" ENCODING = 'UTF8' TABLESPACE = "sys_default" CONNECTION LIMIT = 1 ; ```
- 点【确定】,数据库就建好了,在连接下能看到新的
navicat_test
数据库。
3.2.2 可视化创建用户表(tb_user)
- 展开
navicat_test
数据库→右键点public
模式→选【新建表】,打开表设计界面; - 按业务需求加字段配属性(示例表结构参考表 2):
字段名 | 数据类型 | 长度 | 约束 | 默认值 | 备注 |
---|---|---|---|---|---|
id | INT4 | 32 | 主键、自增 | nextval('tb_user_id_seq'::regclass) | 用户 ID(唯一标识) |
user_name | VARCHAR | 50 | 非空 | - | 用户名 |
user_age | INT4 | 32 | - | 18 | 用户年龄 |
create_time | TIMESTAMP | 6 | - | CURRENT_TIMESTAMP | 创建时间(自动填) |
-
配置的时候注意:
- 主键和自增 :勾上
id
字段的 "主键",在 "默认值" 那选 "自增",Navicat 会自动生成序列(不用自己写SERIAL
类型); - 非空约束 :勾上
user_name
字段的 "不是 null",保证用户名必须填; - 默认值 :
user_age
默认设成 18,create_time
默认设成CURRENT_TIMESTAMP
(自动填当前时间)。
- 主键和自增 :勾上
-
点左上角【保存】,输表名
tb_user
,点【确定】; -
点【SQL 预览】,看看自动生成的建表语句(和金仓数据库语法完全兼容):
sqlCREATE TABLE "public"."tb_user" ( "id" int4 NOT NULL DEFAULT nextval('tb_user_id_seq'::regclass), "user_name" varchar(50) COLLATE "pg_catalog"."default" NOT NULL, "user_age" int4 DEFAULT 18, "create_time" timestamp(6) DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY ("id") ); ALTER TABLE "public"."tb_user" OWNER TO "system"; -- 后面是字段备注,就不重复列了
3.2.3 可视化数据增删改查(CRUD)
跟命令行比起来,Navicat 的可视化操作不用死记 SQL 语法,操作结果还能实时看到,不信咱举几个例子:
-
插入数据:
- 右键点
tb_user
表→选【打开表】,进数据编辑界面; - 在空白行直接填数据:
- 第一行:
user_name=ZhangSan
,user_age=25
(id
自己会涨,create_time
自动填,不用管); - 第二行:
user_name=LiSi
,user_age=30
;
- 第一行:
- 点顶部【保存】(或者按
Ctrl+S
),数据马上就写到数据库里了。
- 右键点
-
筛选数据:
- 在
user_age
列的筛选框里输>25
,界面马上就把符合条件的记录(只有 LiSi)找出来了; - 不用写
SELECT * FROM tb_user WHERE user_age >25;
语句,操作更灵活。
- 在
-
修改数据:
- 双击 LiSi 的
user_age
字段值(原来的 30),直接改成 32; - 点【保存】,修改立刻生效(后台自动执行
UPDATE
语句)。
- 双击 LiSi 的
-
删除数据:
- 选中 ZhangSan 的记录行,点顶部【删除】按钮(或者按
Delete
键); - 在弹出的确认框里点【是】,数据瞬间就删掉了(后台自动执行
DELETE
语句)。
- 选中 ZhangSan 的记录行,点顶部【删除】按钮(或者按
3.3 进阶操作:函数调试与数据迁移
3.3.1 创建薪资调整函数(带参数与返回值)
企业里经常需要用函数实现批量业务逻辑,比如按部门调员工薪资。Navicat 支持可视化创建和调试金仓数据库的函数,来看看咋操作:
-
新建函数:
-
右键点
navicat_test
数据库→【函数】→【新建函数】,选 "PL/pgSQL" 语言(金仓数据库兼容 PostgreSQL 语法); -
写一段函数 SQL,实现 "按部门批量调薪资" 的功能(支持自定义调薪比例和最低薪资限制):
sqlCREATE OR REPLACE FUNCTION adjust_department_salary( p_dept_id INTEGER, -- 部门ID p_adjust_rate DECIMAL(5,4), -- 调薪比例(比如0.1就是10%) p_min_salary DECIMAL(10,2) DEFAULT NULL -- 最低薪资(可选参数) ) RETURNS INTEGER -- 返回影响的员工行数 LANGUAGE plpgsql AS $$ DECLARE v_affected_rows INTEGER; -- 存影响行数的变量 BEGIN -- 打个日志,在Navicat"消息"面板能看到入参信息 RAISE NOTICE '调整部门%薪资,比例: %,最低薪资: %', p_dept_id, p_adjust_rate, p_min_salary; -- 根据有没有最低薪资参数,执行不同的UPDATE IF p_min_salary IS NOT NULL THEN UPDATE employees SET salary = salary * (1 + p_adjust_rate) WHERE dept_id = p_dept_id AND salary >= p_min_salary; ELSE UPDATE employees SET salary = salary * (1 + p_adjust_rate) WHERE dept_id = p_dept_id; END IF; -- 获取影响的行数 GET DIAGNOSTICS v_affected_rows = ROW_COUNT; RAISE NOTICE '调整完了,影响%条记录', v_affected_rows; RETURN v_affected_rows; -- 异常处理,捕获错误返回信息 EXCEPTION WHEN OTHERS THEN RAISE EXCEPTION '执行失败:%(错误码:%)', SQLERRM, SQLSTATE; END; $$;
-
-
点【运行】按钮,提示 "函数创建成功" 就注册好了;
-
新建查询,执行下面的 SQL 调用函数(调整部门 1 的薪资,比例 10%,最低薪资 10000):
sql
sqlSELECT adjust_department_salary(1, 0.1, 10000) AS affected_rows;
-
执行完返回
affected_rows=2
(说明 2 名员工符合条件),同时在 "消息" 面板能看到调试日志(方便排查问题)。
3.3.2 从 MySQL 迁移数据到金仓数据库
企业有时候需要把传统数据库(比如 MySQL)的数据迁到金仓数据库里,Navicat 的【数据传输】功能能自动处理字段类型兼容的问题(比如 MySQL 的INT
转成金仓的INT4
),迁移起来特别顺:
- 迁移前准备 :
- 先在 Navicat 里建好 MySQL 连接(假设 MySQL 里有
tpcc
数据库和customer
表); - 保证金仓数据库的
navicat_test
已经创建好,权限也够。
- 先在 Navicat 里建好 MySQL 连接(假设 MySQL 里有
- 开始数据传输 :
- 点 Navicat 顶部菜单栏【工具】→【数据传输】;
- 配置源和目标:
- 源:选 MySQL 连接→
tpcc
数据库→customer
表; - 目标:选 KingbaseES 连接→
navicat_test
数据库→public
模式(目标表会自动创建);
- 源:选 MySQL 连接→
- 勾上 "自动映射字段",Navicat 会自动匹配字段类型(比如 MySQL 的
INT
转成金仓的INT4
,VARCHAR
转VARCHAR
);
- 点【开始】,看着进度条走完,完成后提示 "成功传输 60000 条数据"(示例数据量);
- 验证迁移结果 :
- 在金仓数据库里打开
customer
表,看看数据和 MySQL 里是不是一模一样; - 再对比下表结构,MySQL 的
id
字段(INT
)已经自动转成金仓的INT4
了,没出现字段类型不兼容的问题。
- 在金仓数据库里打开
3.4 运维操作:备份恢复与权限管理
3.4.1 全量备份金仓数据库
数据备份是保护数据安全的关键一步,Navicat 支持可视化全量备份,步骤很简单:
- 右键点
navicat_test
数据库→【备份】→【新建备份】; - 配置备份参数:
- 备份名:默认是 "navicat_test_20251015"(带时间戳,方便区分);
- 备份类型:选 "完整备份"(表结构、数据、约束、索引都备份);
- 备份路径:建议改到非系统盘(比如
D:\KingbaseBackup
);
- 点【开始】,等进度条走完,提示 "备份成功",就会生成
.nb3
格式的备份文件; - 去备份路径看看,确认文件存在,大小也正常(比如 5MB,和数据库数据量匹配)。
3.4.2 数据恢复(从备份文件恢复)
要是数据丢了或者坏了,用备份文件恢复特别快:
- 右键点
navicat_test
数据库→【还原备份】→选之前生成的.nb3
备份文件; - Navicat 会提示 "恢复会覆盖现有数据",确认没问题就点【确定】;
- 点【开始】,等进度条走完,提示 "恢复成功";
- 打开
tb_user
表看看,数据和备份前一模一样,恢复成功。
3.4.3 创建只读用户(精细化权限管控)
为了防止超权限操作把数据弄乱,可以用 Navicat 创建只读用户(只能查询,不能修改):
-
新建查询,执行下面的 SQL 创建
read_only_user
并授权:sql-- 创建用户(密码得符合复杂度要求) CREATE USER read_only_user WITH PASSWORD 'Kingbase@123'; -- 授予数据库连接权限 GRANT CONNECT ON DATABASE navicat_test TO read_only_user; -- 授予public模式使用权限 GRANT USAGE ON SCHEMA public TO read_only_user; -- 授予所有表的SELECT权限(只能读) GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only_user;
-
验证权限:
- 用
read_only_user
连接数据库,试试执行INSERT
语句(比如INSERT INTO tb_user (user_name) VALUES ('WangWu');
); - 系统会提示 "权限被拒绝",说明只读权限生效了(只能执行
SELECT
操作)。
- 用
四、结语
通过这次 Navicat Premium 和金仓数据库的深度磨合,我是实实在在体会到了可视化管理工具给国产数据库运维带来的变化。从建表、管数据这些基础操作,到调函数、迁数据这些进阶操作,再到备份恢复、权限管理这些运维操作,Navicat Premium 靠着 "门槛低、效率高、场景全" 的特点,跟金仓数据库配合得相当默契。
对企业来说,这种 "工具 + 数据库" 的模式可不只是降低了国产数据库的使用门槛,让非技术人员也能快速上手,更厉害的是通过自动化功能(像 SQL 自动补全、字段类型自动转换),把原来得干 1 小时的活儿,十分钟就能搞定,开发和运维效率直接拉满。而且 Navicat 跨平台的特性(Windows、macOS、Linux 都能用),也给多环境部署的企业省了不少事儿。
往后国产数据库肯定会发展得越来越好,我也盼着 Navicat Premium 能再多支持一些金仓数据库的专属功能(比如闪回查询、表空间管理),把定时备份、数据可视化这些功能做得更稳定,给国产数据库的落地再加把劲。要是你们企业已经用上了金仓数据库,我真心推荐试试 Navicat Premium,说不定能让你们的数据库管理效率提升一大截,把国产数据库的业务价值全发挥出来。