Navicat Premium 与金仓数据库融合实践:高效管理国产数据库新方案

引言:数据库管理工具与国产数据库的融合趋势

如今数字化转型的脚步越来越快,国产数据库在企业级应用里的地位越来越重要。为啥呢?因为像金仓数据库(KingbaseES)这样的国产数据库,不光性能稳定、架构安全,还特别贴合本土业务的需求,现在已经在金融、政务、能源这些关键行业扎下根了,扛起了海量数据存储和高并发事务处理的大旗。

不过啊,数据库要想跑得顺,离不开好用的管理工具。要是还靠传统的命令行操作,那门槛可太高了,稍不留神输错个语法,运维效率就直线下降。好在 Navicat Premium 这个全球主流的数据库管理工具够给力,跨平台、可视化、功能全,成了连接开发和运维的一把好手。当 Navicat Premium 遇上金仓数据库,就像给国产数据库配上了 "智能导航",不仅补上了可视化管理工具生态的短板,还靠 "工具 + 数据库" 的协同效应,给企业搭起了从数据开发、运维到分析的全流程高效方案,难怪成了国产数据库落地的重要帮手。

一、金仓数据库(KingbaseES)下载与配置

咱这次用的是 KingbaseES V9R1C10 企业版,搭配 CentOS 7.9 操作系统。下面这些下载和配置步骤可得看仔细了,保证数据库环境稳稳妥妥的。

1.1 下载金仓数据库

  1. 先打开金仓数据库官网(www.kingbase.com.cn/),找到 "产品中心" 里的 "KingbaseES";
  2. 按照操作系统类型(咱这儿是 CentOS 7.9 64 位),下载对应的企业版安装包(得先注册账号申请试用授权);
  3. 下载完把安装包(比如KingbaseES_V9R1C10_Lin64.zip)和 license 文件一块传到服务器的/home/kingbase目录下。

1.2 安装前环境准备

  1. 关防火墙(不然端口被挡住了,后面连不上可就麻烦了):

    bash 复制代码
    # 先把防火墙服务停了
    systemctl stop firewalld
    # 再设置成开机不自动启动
    systemctl disable firewalld
  2. 装依赖包(缺了依赖装到一半卡住就尴尬了):

    bash 复制代码
    yum install -y libaio-devel glibc-devel gcc-c++
  3. 创建用户和组(按金仓的规范,别用 root 用户装):

    bash 复制代码
    # 先建个kingbase用户组
    groupadd kingbase
    # 再建kingbase用户并加到组里
    useradd -g kingbase kingbase
    # 给用户设个密码
    passwd kingbase
    # 把安装目录的权限也授一下
    chown -R kingbase:kingbase /home/kingbase

1.3 执行金仓数据库安装

  1. 切换到 kingbase 用户,解压安装包:

    bash 复制代码
    su - kingbase
    unzip KingbaseES_V9R1C10_Lin64.zip
    cd KingbaseES_V9R1C10_Lin64
  2. 执行安装脚本,要是服务器有图形界面,就用图形化安装;没图形界面就选控制台模式:

    bash 复制代码
    # 图形化安装(得服务器支持图形界面才行)
    ./setup.sh
    # 控制台安装(没图形界面就用这个)
    ./setup.sh -console
  3. 安装向导里这几个地方得注意:

    • 安装路径 :默认/opt/kingbase/es/V9R1C10,建议别改;
    • 数据库端口 :默认54321,后面连接要用,别随便动;
    • 超级用户密码 :给system用户设个密码(比如Kingbase@123),这密码可得记好咯;
    • 授权文件:把之前下的 license 文件选上,完成授权验证。
  4. 等安装进度走完,点 "完成" 就装好了。

1.4 验证数据库运行状态

  1. 启动数据库服务

    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
  2. 检查端口监听(看看 54321 端口是不是被 kingbase 进程占了):

    bash 复制代码
    netstat -tlnp | grep 54321
    # 正常的话会显示类似这样的信息:tcp        0      0 0.0.0.0:54321           0.0.0.0:*               LISTEN      12345/kingbase
  3. 本地连接测试(用金仓自带的 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 及以上版本了,下载安装步骤往下看。

  1. 打开 Navicat 官网(www.navicat.com.cn/),找到 "产品" 里的 "Navicat Premium";
  2. 点 "下载试用",选 "Windows 64 位" 版本,下载安装包
  3. 要是浏览器提示文件没验证,别担心,直接点 "保留" 就行,官方下的没风险。
  1. 双击安装包,弹出 "欢迎安装" 界面,直接点【下一步】;

  2. 看完许可协议,勾上 "我接受",再点【下一步】;

  3. 选安装目录 :建议别装 C 盘,自定义个路径(比如D:\Program Files\Premium Soft\Navicat Premium 17),点【下一步】;

  4. 额外任务:勾上 "创建桌面快捷方式",以后打开方便,点【下一步】;

  5. 确认信息没错就点【安装】,等个 1-2 分钟进度条走完;

  6. 装完点【完成】,勾上 "运行 Navicat Premium" 直接打开软件。

  1. 第一次打开 Navicat,会弹出 "试用" 或 "激活" 窗口,选【试用】就行(能免费试用 14 天,所有功能都能用);
  2. 进主界面后,点顶部菜单栏【工具】→【选项】,简单配置一下:
    • 外观:按自己喜好选 "浅色" 或 "深色" 主题;
    • SQL 编辑:把 "语法高亮""自动补全" 勾上,后面写 SQL 能省不少事儿;
    • 编码:默认 "UTF-8",跟金仓数据库的编码一致,不怕中文乱码;
  3. 点【确定】保存配置,初始化就完成了。

三、Navicat Premium 连接金仓数据库:实际使用示例与体验

接下来咱从 "连接配置→表设计→数据操作→函数调试→备份恢复" 走一遍全流程,看看 Navicat Premium 和金仓数据库怎么配合干活,顺便感受一下可视化操作到底有多高效。

3.1 连接金仓数据库(关键步骤)

  1. 新建 KingbaseES 连接
    • 点 Navicat 主界面左上角【连接】→下拉菜单里找到【KingbaseES】;
    • 在 "KingbaseES - 新建连接" 窗口里,按下面的参数填(参考表 1):
参数名称 填写内容 说明
连接名 KingbaseES-Test 自己起个名,方便区分不同的连接
主机 192.168.1.100(示例) 金仓数据库服务器的 IP,本地就填 127.0.0.1
端口 54321 金仓数据库的默认端口,跟安装时一样
初始数据库 test 连接后默认进这个数据库(后面能改)
用户名 system 金仓数据库的超级用户
密码 Kingbase@123(示例) 安装时给 system 用户设的密码
保存密码 勾选(本地测试环境) 要是生产环境,为了安全建议别勾选
  1. 测试连接和排错
    • 点窗口左下角【测试连接】,要是提示 "连接成功",那 Navicat 和金仓数据库就通上了;
    • 要是连不上,按这几步查查:
      1. 先看看服务器 IP 对不对,用ping 192.168.1.100试试网络通不通;
      2. 再看看端口开了没,在服务器执行firewall-cmd --query-port=54321/tcp,没开就执行firewall-cmd --add-port=54321/tcp --permanent,然后重启防火墙(systemctl restart firewalld);
      3. 最后看看密码是不是输错了,注意大小写哦(金仓数据库密码区分大小写)。
  2. 确认连接成功:点【确定】保存连接,主界面就会出现 "KingbaseES-Test" 连接,双击就能进数据库操作界面了。

(我这里是之前已经创建过了数据库和表,你新创建的应该是空的才对)

3.2 基础操作:可视化创建表与数据管理

以前用命令行建表,得自己写CREATE TABLE语句,稍不注意字段类型或约束写错了,表就建不起来。现在用 Navicat 的可视化设计功能,拖拖拽拽就能配好,效率简直翻倍。

3.2.1 新建测试数据库(navicat_test)

  1. 右键点 "KingbaseES-Test" 连接→选【新建数据库】;

  2. 配置数据库参数(防止中文乱码):

    • 数据库名:navicat_test
    • 所有者:system(默认就是当前登录用户);
    • 模板:template0(这样数据库初始化环境更干净);
    • 编码:UTF8
  3. 点【SQL 预览】,能看到自动生成的建库语句(看看语法对不对):

    sql 复制代码

CREATE DATABASE "navicat_test" WITH OWNER = "system" TEMPLATE = "template0" ENCODING = 'UTF8' TABLESPACE = "sys_default" CONNECTION LIMIT = 1 ; ```

  1. 点【确定】,数据库就建好了,在连接下能看到新的navicat_test数据库。

3.2.2 可视化创建用户表(tb_user)

  1. 展开navicat_test数据库→右键点public模式→选【新建表】,打开表设计界面;
  2. 按业务需求加字段配属性(示例表结构参考表 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 创建时间(自动填)
  1. 配置的时候注意:

    • 主键和自增 :勾上id字段的 "主键",在 "默认值" 那选 "自增",Navicat 会自动生成序列(不用自己写SERIAL类型);
    • 非空约束 :勾上user_name字段的 "不是 null",保证用户名必须填;
    • 默认值user_age默认设成 18,create_time默认设成CURRENT_TIMESTAMP(自动填当前时间)。
  2. 点左上角【保存】,输表名tb_user,点【确定】;

  3. 点【SQL 预览】,看看自动生成的建表语句(和金仓数据库语法完全兼容):

    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";
    -- 后面是字段备注,就不重复列了

3.2.3 可视化数据增删改查(CRUD)

跟命令行比起来,Navicat 的可视化操作不用死记 SQL 语法,操作结果还能实时看到,不信咱举几个例子:

  1. 插入数据

    • 右键点tb_user表→选【打开表】,进数据编辑界面;
    • 在空白行直接填数据:
      • 第一行:user_name=ZhangSanuser_age=25id自己会涨,create_time自动填,不用管);
      • 第二行:user_name=LiSiuser_age=30
    • 点顶部【保存】(或者按Ctrl+S),数据马上就写到数据库里了。
  2. 筛选数据

    • user_age列的筛选框里输>25,界面马上就把符合条件的记录(只有 LiSi)找出来了;
    • 不用写SELECT * FROM tb_user WHERE user_age >25;语句,操作更灵活。
  3. 修改数据

    • 双击 LiSi 的user_age字段值(原来的 30),直接改成 32;
    • 点【保存】,修改立刻生效(后台自动执行UPDATE语句)。
  4. 删除数据

    • 选中 ZhangSan 的记录行,点顶部【删除】按钮(或者按Delete键);
    • 在弹出的确认框里点【是】,数据瞬间就删掉了(后台自动执行DELETE语句)。

3.3 进阶操作:函数调试与数据迁移

3.3.1 创建薪资调整函数(带参数与返回值)

企业里经常需要用函数实现批量业务逻辑,比如按部门调员工薪资。Navicat 支持可视化创建和调试金仓数据库的函数,来看看咋操作:

  1. 新建函数

    • 右键点navicat_test数据库→【函数】→【新建函数】,选 "PL/pgSQL" 语言(金仓数据库兼容 PostgreSQL 语法);

    • 写一段函数 SQL,实现 "按部门批量调薪资" 的功能(支持自定义调薪比例和最低薪资限制):

      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;
      $$;
  2. 点【运行】按钮,提示 "函数创建成功" 就注册好了;

  3. 新建查询,执行下面的 SQL 调用函数(调整部门 1 的薪资,比例 10%,最低薪资 10000):

    sql

    sql 复制代码
    SELECT adjust_department_salary(1, 0.1, 10000) AS affected_rows;
  4. 执行完返回affected_rows=2(说明 2 名员工符合条件),同时在 "消息" 面板能看到调试日志(方便排查问题)。

3.3.2 从 MySQL 迁移数据到金仓数据库

企业有时候需要把传统数据库(比如 MySQL)的数据迁到金仓数据库里,Navicat 的【数据传输】功能能自动处理字段类型兼容的问题(比如 MySQL 的INT转成金仓的INT4),迁移起来特别顺:

  1. 迁移前准备
    • 先在 Navicat 里建好 MySQL 连接(假设 MySQL 里有tpcc数据库和customer表);
    • 保证金仓数据库的navicat_test已经创建好,权限也够。
  2. 开始数据传输
    • 点 Navicat 顶部菜单栏【工具】→【数据传输】;
    • 配置源和目标:
      • 源:选 MySQL 连接→tpcc数据库→customer表;
      • 目标:选 KingbaseES 连接→navicat_test数据库→public模式(目标表会自动创建);
    • 勾上 "自动映射字段",Navicat 会自动匹配字段类型(比如 MySQL 的INT转成金仓的INT4VARCHARVARCHAR);
  3. 点【开始】,看着进度条走完,完成后提示 "成功传输 60000 条数据"(示例数据量);
  4. 验证迁移结果
    • 在金仓数据库里打开customer表,看看数据和 MySQL 里是不是一模一样;
    • 再对比下表结构,MySQL 的id字段(INT)已经自动转成金仓的INT4了,没出现字段类型不兼容的问题。

3.4 运维操作:备份恢复与权限管理

3.4.1 全量备份金仓数据库

数据备份是保护数据安全的关键一步,Navicat 支持可视化全量备份,步骤很简单:

  1. 右键点navicat_test数据库→【备份】→【新建备份】;
  2. 配置备份参数:
    • 备份名:默认是 "navicat_test_20251015"(带时间戳,方便区分);
    • 备份类型:选 "完整备份"(表结构、数据、约束、索引都备份);
    • 备份路径:建议改到非系统盘(比如D:\KingbaseBackup);
  3. 点【开始】,等进度条走完,提示 "备份成功",就会生成.nb3格式的备份文件;
  4. 去备份路径看看,确认文件存在,大小也正常(比如 5MB,和数据库数据量匹配)。

3.4.2 数据恢复(从备份文件恢复)

要是数据丢了或者坏了,用备份文件恢复特别快:

  1. 右键点navicat_test数据库→【还原备份】→选之前生成的.nb3备份文件;
  2. Navicat 会提示 "恢复会覆盖现有数据",确认没问题就点【确定】;
  3. 点【开始】,等进度条走完,提示 "恢复成功";
  4. 打开tb_user表看看,数据和备份前一模一样,恢复成功。

3.4.3 创建只读用户(精细化权限管控)

为了防止超权限操作把数据弄乱,可以用 Navicat 创建只读用户(只能查询,不能修改):

  1. 新建查询,执行下面的 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;
  2. 验证权限

    • 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,说不定能让你们的数据库管理效率提升一大截,把国产数据库的业务价值全发挥出来。

相关推荐
程序新视界3 小时前
为什么要尽量将MySQL表字段要设置为NOT NULL?
数据库·mysql·dba
怪兽20143 小时前
SQL优化手段有哪些
java·数据库·面试
lypzcgf4 小时前
FastbuildAI后端数据库模块注册分析
数据库·ai应用·ai创业·智能体平台·ai应用平台·agent平台·fastbuildai
xyy20254 小时前
Spring事务的传播方式
java·数据库·spring
非凡的世界5 小时前
Thinkphp8 Redis队列与消息队列topthink/think-queue 原创
数据库·redis·bootstrap·thinkphp
yookay zhang5 小时前
DM线程的管理知识学习
数据库
l1t5 小时前
测试DuckDB电子表格读取插件rusty_sheet 0.2版
数据库·rust·插件·xlsx·duckdb
TiAmo zhang6 小时前
SQL Server 2019实验 │ 表数据插入、修改和删除
数据库·oracle
慕容雪_6 小时前
MySQL去除表、字段注释
数据库·mysql