ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Navicat连接人大金仓实操指南:从协议兼容到高频排障

Navicat连接人大金仓实操指南:从协议兼容到高频排障 简介使用Navicat连接人大金仓数据库的图文操作指南专为需要跨平台管理人大金仓KingbaseES的数据库运维与开发人员准备。资源以Word文档形式完整记录了从Navicat官方渠道下载安装、创建数据库连接、配置账号密码到连接成功后新建数据库、转储SQL文件、复制为插入语句以及执行SQL语句的全流程操作同时针对字符集/排序规则不一致导致的乱码问题给出C字符集建议并提示使用官方工具的安全注意事项。压缩包内仅有1个docx文档文件体积约1.62MB轻量易用适合按目录逐步对照操作。该资源已有1279人学习下载可帮助初学者快速掌握连接人大金仓数据库的要点规避常见配置坑点提升日常数据库管理效率。1. 用 Navicat 连接人大金仓协议兼容不等于填上 IP 就能通人大金仓KingbaseES虽然挂着国产数据库的名字跟 Navicat 打交道时走的却是 PostgreSQL 协议理论上有客户端就能连。但真到实操大多数人第一次都被卡在三处端口默认是 54321 而不是 5432密码账号看着没问题却被 sys_hba.conf 挡在外面或者连接成功后发现对象树里一个库都没有。下面按「连接前要对齐哪些信息 → Navicat 里参数怎么填 → 失败了看哪里」的顺序把一条能复现、能排障的连接路径写清楚。适合正在做信创环境落地的开发、运维以及还在评估工具链的团队参考。2. 连接前先对齐三件事端口、认证和默认库2.1 Navicat 靠什么连金仓PostgreSQL 驱动的兼容边界Navicat 的 PostgreSQL 连接入口封装了一套完整的 PG wire protocol 客户端。它不依赖你是否安装了金仓的 JDBC 或 ODBC 驱动因为 Navicat 本身不走 JDBC 那套协议栈。金仓服务端在网络层模拟了 PostgreSQL 的手握协议Navicat 只需要把自己当成一个普通 PG 客户端即可握手成功。这就是为什么「不需要装任何额外驱动」这件事成立。兼容是有边界的。Navicat 的对象树、表设计器、逆向建模都要读系统表金仓保留了大部分 PG 系统表和视图所以表、索引、视图、函数这些节点基本都能正常显示。但金仓对内核做过裁剪Navicat 里某些依赖扩展插件的节点比如外部数据包装器、过程语言管理可能展示不全点击后长时间转圈甚至报错。这类问题不是驱动坏了多半是金仓版本对系统表字段做了精简Navicat 按原版 PG 的结构去查查不到就卡住。那 ODBC 驱动什么时候才需要当 Navicat 的 PG 入口在连接握手阶段就失败比如服务端启用了一种改过的认证插件导致客户端不认此时可以退到 ODBC 入口用金仓官方 ODBC 驱动做通用连接。ODBC 这条路能查数据、能跑 SQL但对象树和设计器指望不上只作为兼容性兜底。先把这层认知放这里后文两条路径都会讲到。2.2 拿到端口、监听地址和超管账号三条命令对齐Navicat 填参数之前得先知道金仓装在哪台机器、端口是多少、默认库叫什么。与其问人不如自己上服务器查。金仓的控制工具叫 sys_ctl不是 pg_ctl主配置文件叫 kingbase.conf不是 postgresql.conf。这一步是很多人踩坑的起点——拿 PG 的习惯去搜文件名结果什么都搜不到。# 1. 先找到金仓的数据目录进程启动参数里的 -D 就是 ps -ef | grep kingbase | grep -v grep # 2. 查看金仓运行状态与数据目录 /home/kingbase/kingbase/bin/sys_ctl status -D /home/kingbase/data # 3. 确认端口、监听地址 grep -E ^(port|listen_addresses) /home/kingbase/data/kingbase.confps输出里通常能看到类似kingbase -D /home/kingbase/data的行记下这个路径sys_ctl status返回 running 才算服务正常最后那行 grep 如果只看到注释没看到实际值往下翻几十行因为真正的port 54321往往写在配置块中间。listen_addresses如果被设置成127.0.0.1或localhostNavicat 从别的机器连一定会报 connection refused把它改成*并重启是远程连接的前提。然后是库名和账号。金仓初始化完成后默认超级用户一般是 system不是 postgres默认库常见是 TEST部分版本还带 SECURITY 等库。Navicat 的「数据库」字段可以留空登录后再拉取实例下所有库。如果留空连接报「database does not exist」说明这个用户没有默认库只能到服务器端先建一个。2.3 sys_hba.conf 决定远程能不能连最常见的卡点金仓的认证策略配置文件叫 sys_hba.conf格式与 PG 的 pg_hba.conf 一模一样。Navicat 连接失败场景里最典型的就是远程来源地址没有放行或者认证方式设成了 trust。trust 表示本机免密远程用户即使密码正确也可能被直接拒绝md5 和 scram-sha-256 才是能走网络的密码认证方式。# 查看当前认证规则重点关注包含你客户端 IP 的那行 grep -E ^(host|local) /home/kingbase/data/sys_hba.conf # 追加一条远程允许规则然后重新加载配置 echo host all all 0.0.0.0/0 md5 /home/kingbase/data/sys_hba.conf /home/kingbase/kingbase/bin/sys_ctl reload -D /home/kingbase/data0.0.0.0/0表示放行所有来源 IP生产环境建议改成具体网段认证方式优先写 md5兼容性最好。Navicat 的 PG 客户端对 scram-sha-256 也支持但如果你碰到的是老版本金仓scram 可能存在实现不完整的情况第一轮排障切 md5 最省事。reload 是热加载不需要重启服务注意修改 sys_hba.conf 必须用 kingbase 系统用户普通用户没有写权限。改完配置先别急着回 Navicat在服务器本机执行一条登录测试/home/kingbase/kingbase/bin/ksql -U system -d TEST -h 127.0.0.1 -p 54321能进入说明认证没问题再用服务器的对外 IP 试一次就能区分是认证问题还是网络问题。这两种问题的排查路径完全不同别混在一起查。提示修改 sys_hba.conf 前先备份原文件。金仓在 reload 时如果发现语法错误会直接拒绝加载新配置但不会中断现有连接。备份能让你快速回滚。3. 用 Navicat 建连接PostgreSQL 入口为主ODBC 入口兜底3.1 首选路径PostgreSQL 连接的关键参数表打开 Navicat点击「连接」→「PostgreSQL」,进入连接配置页。这里所有参数都能从第 2 章的命令结果里拿到不要凭记忆填。字段填什么说明连接名自定如 kingbase-demo仅用于识别不参与协议主机金仓服务器 IP不要填 localhost除非 Navicat 装在同一台机器上端口54321以 kingbase.conf 里实际值为准数据库留空或 TEST留空会拉全部库前提是账号有默认库用户名system金仓默认超级用户是 system密码安装时设置的密码注意首尾不要带空格高级选项里「编码」建议选 UTF-8。部分新版本 Navicat 的 PG 连接配置里会出现「数据库类型」下拉能选到 KingbaseES 就直接选选不到也没关系PG 协议兼容的连接路径是一样的。填完点「测试连接」绿勾表示握手成功再点保存。金仓如果不在当前网段可以走 SSH 隧道连接对话框里有 SSH 标签页勾选「使用 SSH 隧道」填跳板机地址和账号Navicat 会把流量加密转发到金仓端口。此时「主机」写127.0.0.1或金仓内网 IP 都可。信创环境里数据库通常被堡垒机挡着这个功能非常常用。3.2 备选路径ODBC 通用连接能跑 SQL 但别期待完整对象树什么时候必须用 ODBCNavicat 的 PG 入口连握手都失败、报版本不兼容、或者内网策略只允许装了金仓 ODBC 驱动的客户端访问。此时从 Navicat 连接列表选「ODBC」走另一条路。Windows 上的配置流程先装金仓安装包自带的 ODBC Driver然后控制面板 → 管理工具 → ODBC 数据源管理器 → 系统 DSN → 添加选择金仓驱动填写 Server、Port、Database、Username、Password最后回到 Navicat 新建「ODBC」连接选择刚才配置好的 DSN 名。连接方式能做什么不能做什么PostgreSQL 入口完整对象树、表设计器、模型、查询、数据传输几乎无短板ODBC 入口查询、导出数据、跑 SQL表设计、建模、对象树完整展示ODBC 连接在 macOS 上比较挑驱动架构如果你的 Mac 是 Apple Silicon需要确认金仓 ODBC 驱动是否提供对应版本否则即使装上也无法加载。ODBC 只能作为备胎不建议作为日常开发入口。3.3 连接成功后的第一个验证动作连接成功的标志不是绿色连接名而是树形结构里能看到实例下的多个库。展开 TEST → 模式 → public能看到表列表双击表能预览数据。此时先别急着建表跑一个最小的验证查询SELECT version();返回结果里含 KingbaseES 字样才算真正握手成功。再看一句SHOW server_encoding;确认字符集如果返回 GBK后续做数据导入导出时很容易乱码建议业务库显式用 UTF8 模板创建。如果你只是临时验证用 Docker 起一个金仓镜像也完全可行容器映射 54321 端口到宿主机Navicat 连接宿主机 IP 加映射端口即可操作上和真机一模一样。这个做法适合先验证 Navicat 与金仓的兼容性再决定要不要在正式环境投入。4. 连接人大金仓的 5 个高频坑现象、原因、解法4.1 提示 Connection refused服务明明在运行现象Navicat 测试连接报 connection refused服务器上ps却能看到 kingbase 进程在跑。原因三种最常见——端口不是 54321 而是别的服务只监听了 127.0.0.1防火墙没放行 TCP 端口。解决按 2.2 的 grep 命令查实际端口和 listen_addresses。如果 listen_addresses 是127.0.0.1改成*并重启金仓服务。然后在客户端机器上执行telnet 金仓IP 54321命令能连通才算网络层通过不通就去查防火墙安全组。别说反了先在服务器上用ss -lntp | grep 54321确认监听地址再谈防火墙顺序反了容易被跳过。4.2 password authentication failed先看认证策略再改密码现象测试连接报 password authentication failed for user system密码输入两遍都确认是对的。原因sys_hba.conf 里来源地址对应的 method 是trust或reject或者服务端启用了 scram 而客户端协商不一致又或者密码里带特殊字符被 Navicat 转义解析错。解决grep 出 sys_hba.conf 里客户端 IP 对应的行把 method 改成md5reload。然后在 Navicat 密码框里手动重新输入一次不清空直接粘贴容易带不可见字符。如果还不行在服务器上用 ksql 以 TCP 方式登录同一账号能进就是 Navicat 侧参数问题进不去就确认密码本身ALTER USER system PASSWORD 新密码;。4.3 连接成功但对象树空空如也现象测试连接绿勾双击连接名后看不到任何库或者只看到一个空白节点。原因Navicat 的「数据库」字段填了不存在的库名或当前用户没有默认库客户端连上后没有可展示的命名空间或金仓初始化默认库不是 TESTNavicat 拉库列表时空结果。解决把连接窗口里的「数据库」字段清空重连。如果清空后报database xxx does not exist说明账号没有默认库到服务器上用 system 用户建一个CREATE DATABASE bizdb WITH OWNER system ENCODINGUTF8 TEMPLATE template0;建完在 Navicat 里手动刷新库就会出现在树里。注意金仓的CREATE DATABASE不允许在事务块里执行Navicat 查询工具默认自动提交没这个问题但如果你通过脚本跑记得去掉 BEGIN。4.4 表能显示但加载 schema 特别慢或卡死现象连接正常展开 public 模式时转圈很久或双击表之后一直 loading。原因Navicat 读取元数据靠系统表查询。金仓部分系统表没有 PG 原版的统计信息Navicat 走了全表扫描也可能是网络链路 MTU 问题导致大结果集半路卡住。解决把连接的高级选项里「自动刷新」关掉连接超时和查询超时调大。展开对象时不要频繁点右键刷新每点一次就是一批系统表查询。实在不行用 ODBC 入口连同一个库跑SELECT * FROM 业务表 LIMIT 10能返回就说明数据链路没问题问题出在 Navicat 的元数据渲染层。这个坑在国产 PG 分支上很常见不是 Navicat 本身坏了。4.5 建表或查询报语法错误SQL 却是合法的现象用 Navicat 表设计器保存表时报错或者手写CREATE TABLE user (...)报语法错误。原因金仓可以初始化成 Oracle 兼容模式或 PG 兼容模式。Oracle 模式下双引号语义、空字符串处理、rownum 行为都和 PG 不同Navicat 生成的 SQL 默认按 PG 行为生成两边对不上就报错。解决先确认当前金仓的启动模式在查询工具里执行SHOW server_version;看响应里的兼容标记。写 SQL 时显式指定搜索路径SET search_path TO public;表名带双引号时统一用大小写。生产环境如果要用 Navicat 的「结构同步」生成 DDL先在查询工具里审阅再执行不要直接点应用。金仓的 Oracle 模式对引号、分号、空字符串非常敏感这是血泪经验少走弯路。注意Navicat 生成的建表语句里如果带了SERIAL类型金仓部分版本在 Oracle 模式下解析会出问题。遇到这种情况手动改成BIGINT加序列或GENERATED BY DEFAULT AS IDENTITY更稳。5. 连上之后先做三件事数据传输、备份验证和模型检查5.1 验证兼容边界把开发库导进来跑一遍连接成功后别急着写业务代码。打开 Navicat 的「数据传输」功能从现有 PostgreSQL 或达梦库导一批有代表性的表过来最好带上分区表、视图和函数。Navicat 的数据传输对同协议数据库会尽量走服务端直传但对异构数据库会先把数据拉到客户端再写过去大数据量会很慢所以只用来迁移结构和样本数据。真正全量迁移用金仓自带的迁移工具别拿 Navicat 硬扛。5.2 备份别只依赖 Navicat 的备份功能Navicat 的备份功能对 PG 系数据库封装的是 pg_dump 行为金仓虽然协议兼容但它自带的备份工具是另一套。Navicat 备份出来的文件拿到金仓上恢复经常出现版本不匹配的问题。我的习惯是Navicat 只用来做「存档性导出」或「跨环境抽数」正式备份一律在服务器上用金仓的备份脚本定时跑并且每季度手动恢复验证一次确认备份文件真的可用。5.3 用模型功能检查外键关系金仓如果是从 Oracle 迁过来的库外键往往名存实亡。Navicat 的模型功能可以从数据库反向导入表和视图然后画关系线。右键「模型」→「从数据库导入」选好目标库后缺失外键一眼就能看出来。画完模型把缺失的外键、索引以 SQL 形式生成出来人工审阅后再执行。这个动作对交接给下一个人维护特别有价值ER 图比任何文档都直观。我现在的习惯是给所有金仓环境的第一版连接配置留一份截图和 sys_hba.conf 的变更记录防止同事 reload 配置后把远程访问冲掉。连接到环境的第一件事不是写 SQL而是把备份路径和验证查询固定下来。希望帮到你。本文还有配套的精品资源点击获取
返回列表