异世界极道传说
780.72MB · 2025-10-18
如今数字化转型的脚步越来越快,国产数据库在企业级应用里的地位越来越重要。为啥呢?因为像金仓数据库(KingbaseES)这样的国产数据库,不光性能稳定、架构安全,还特别贴合本土业务的需求,现在已经在金融、政务、能源这些关键行业扎下根了,扛起了海量数据存储和高并发事务处理的大旗。
不过啊,数据库要想跑得顺,离不开好用的管理工具。要是还靠传统的命令行操作,那门槛可太高了,稍不留神输错个语法,运维效率就直线下降。好在 Navicat Premium 这个全球主流的数据库管理工具够给力,跨平台、可视化、功能全,成了连接开发和运维的一把好手。当 Navicat Premium 遇上金仓数据库,就像给国产数据库配上了 “智能导航”,不仅补上了可视化管理工具生态的短板,还靠 “工具 + 数据库” 的协同效应,给企业搭起了从数据开发、运维到分析的全流程高效方案,难怪成了国产数据库落地的重要帮手。
咱这次用的是 KingbaseES V9R1C10 企业版,搭配 CentOS 7.9 操作系统。下面这些下载和配置步骤可得看仔细了,保证数据库环境稳稳妥妥的。
KingbaseES_V9R1C10_Lin64.zip
)和 license 文件一块传到服务器的/home/kingbase
目录下。关防火墙(不然端口被挡住了,后面连不上可就麻烦了):
# 先把防火墙服务停了
systemctl stop firewalld
# 再设置成开机不自动启动
systemctl disable firewalld
装依赖包(缺了依赖装到一半卡住就尴尬了):
yum install -y libaio-devel glibc-devel gcc-c++
创建用户和组(按金仓的规范,别用 root 用户装):
# 先建个kingbase用户组
groupadd kingbase
# 再建kingbase用户并加到组里
useradd -g kingbase kingbase
# 给用户设个密码
passwd kingbase
# 把安装目录的权限也授一下
chown -R kingbase:kingbase /home/kingbase
切换到 kingbase 用户,解压安装包:
su - kingbase
unzip KingbaseES_V9R1C10_Lin64.zip
cd KingbaseES_V9R1C10_Lin64
执行安装脚本,要是服务器有图形界面,就用图形化安装;没图形界面就选控制台模式:
# 图形化安装(得服务器支持图形界面才行)
./setup.sh
# 控制台安装(没图形界面就用这个)
./setup.sh -console
安装向导里这几个地方得注意:
/opt/kingbase/es/V9R1C10
,建议别改;54321
,后面连接要用,别随便动;system
用户设个密码(比如Kingbase@123
),这密码可得记好咯;等安装进度走完,点 “完成” 就装好了。
启动数据库服务:
# 先切换到安装目录的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 进程占了):
netstat -tlnp | grep 54321
# 正常的话会显示类似这样的信息:tcp 0 0 0.0.0.0:54321 0.0.0.0:* LISTEN 12345/kingbase
本地连接测试(用金仓自带的 ksql 命令行工具试试):
# 连默认的test数据库,用户是system
./ksql -U system -d test -h 127.0.0.1 -p 54321
# 输完密码要是看到“test=#”的交互界面,就说明数据库没问题
# 再看看数据库版本对不对(确认是不是V9R1C10)
SELECT version();
# 正常会显示:KingbaseES V009R001C010
这次用的是 Navicat Premium V17.3.1(Windows 64 位),这个版本已经正式支持 KingbaseES V8 及以上版本了,下载安装步骤往下看。
双击安装包,弹出 “欢迎安装” 界面,直接点【下一步】;
看完许可协议,勾上 “我接受”,再点【下一步】;
选安装目录:建议别装 C 盘,自定义个路径(比如D:Program FilesPremium SoftNavicat Premium 17
),点【下一步】;
额外任务:勾上 “创建桌面快捷方式”,以后打开方便,点【下一步】;
确认信息没错就点【安装】,等个 1-2 分钟进度条走完;
装完点【完成】,勾上 “运行 Navicat Premium” 直接打开软件。
接下来咱从 “连接配置→表设计→数据操作→函数调试→备份恢复” 走一遍全流程,看看 Navicat Premium 和金仓数据库怎么配合干活,顺便感受一下可视化操作到底有多高效。
参数名称 | 填写内容 | 说明 |
---|---|---|
连接名 | KingbaseES-Test | 自己起个名,方便区分不同的连接 |
主机 | 192.168.1.100(示例) | 金仓数据库服务器的 IP,本地就填 127.0.0.1 |
端口 | 54321 | 金仓数据库的默认端口,跟安装时一样 |
初始数据库 | test | 连接后默认进这个数据库(后面能改) |
用户名 | system | 金仓数据库的超级用户 |
密码 | Kingbase@123(示例) | 安装时给 system 用户设的密码 |
保存密码 | 勾选(本地测试环境) | 要是生产环境,为了安全建议别勾选 |
ping 192.168.1.100
试试网络通不通;firewall-cmd --query-port=54321/tcp
,没开就执行firewall-cmd --add-port=54321/tcp --permanent
,然后重启防火墙(systemctl restart firewalld
);(我这里是之前已经创建过了数据库和表,你新创建的应该是空的才对)
以前用命令行建表,得自己写CREATE TABLE
语句,稍不注意字段类型或约束写错了,表就建不起来。现在用 Navicat 的可视化设计功能,拖拖拽拽就能配好,效率简直翻倍。
右键点 “KingbaseES-Test” 连接→选【新建数据库】;
配置数据库参数(防止中文乱码):
navicat_test
;system
(默认就是当前登录用户);template0
(这样数据库初始化环境更干净);UTF8
;
点【SQL 预览】,能看到自动生成的建库语句(看看语法对不对):
CREATE DATABASE "navicat_test" WITH OWNER = "system" TEMPLATE = "template0" ENCODING = 'UTF8' TABLESPACE = "sys_default" CONNECTION LIMIT = 1 ; ```
navicat_test
数据库。
navicat_test
数据库→右键点public
模式→选【新建表】,打开表设计界面;字段名 | 数据类型 | 长度 | 约束 | 默认值 | 备注 |
---|---|---|---|---|---|
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 预览】,看看自动生成的建表语句(和金仓数据库语法完全兼容):
CREATE 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";
-- 后面是字段备注,就不重复列了
跟命令行比起来,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;
语句,操作更灵活。修改数据:
user_age
字段值(原来的 30),直接改成 32;UPDATE
语句)。删除数据:
Delete
键);DELETE
语句)。企业里经常需要用函数实现批量业务逻辑,比如按部门调员工薪资。Navicat 支持可视化创建和调试金仓数据库的函数,来看看咋操作:
新建函数:
右键点navicat_test
数据库→【函数】→【新建函数】,选 “PL/pgSQL” 语言(金仓数据库兼容 PostgreSQL 语法);
写一段函数 SQL,实现 “按部门批量调薪资” 的功能(支持自定义调薪比例和最低薪资限制):
CREATE 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
SELECT adjust_department_salary(1, 0.1, 10000) AS affected_rows;
执行完返回affected_rows=2
(说明 2 名员工符合条件),同时在 “消息” 面板能看到调试日志(方便排查问题)。
企业有时候需要把传统数据库(比如 MySQL)的数据迁到金仓数据库里,Navicat 的【数据传输】功能能自动处理字段类型兼容的问题(比如 MySQL 的INT
转成金仓的INT4
),迁移起来特别顺:
tpcc
数据库和customer
表);navicat_test
已经创建好,权限也够。tpcc
数据库→customer
表;navicat_test
数据库→public
模式(目标表会自动创建);INT
转成金仓的INT4
,VARCHAR
转VARCHAR
);customer
表,看看数据和 MySQL 里是不是一模一样;id
字段(INT
)已经自动转成金仓的INT4
了,没出现字段类型不兼容的问题。数据备份是保护数据安全的关键一步,Navicat 支持可视化全量备份,步骤很简单:
navicat_test
数据库→【备份】→【新建备份】;D:KingbaseBackup
);.nb3
格式的备份文件;要是数据丢了或者坏了,用备份文件恢复特别快:
navicat_test
数据库→【还原备份】→选之前生成的.nb3
备份文件;tb_user
表看看,数据和备份前一模一样,恢复成功。为了防止超权限操作把数据弄乱,可以用 Navicat 创建只读用户(只能查询,不能修改):
新建查询,执行下面的 SQL 创建read_only_user
并授权:
-- 创建用户(密码得符合复杂度要求)
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,说不定能让你们的数据库管理效率提升一大截,把国产数据库的业务价值全发挥出来。