KingbaseES-Windows单机实例运行机制与环境基线检查 KingbaseES Windows 单机实例运行机制与环境基线检查专栏定位本系列以 Windows 环境为主线使用ksql命令行工具学习和管理电科金仓 KingbaseES 数据库。后续会逐步进入建库、建表、权限、安全、调优、备份恢复和迁移场景。引言这是本专栏的第一篇文章目标不是一上来就堆 SQL而是先把 KingbaseES 在 Windows 上的运行环境讲清楚。对于数据库学习来说连接成功只是表象背后还涉及软件安装目录、实例服务、配置文件、监听端口、数据库用户和目标数据库等多个环节。只有这些基础状态都确认无误后续的建库、建表、权限、查询、事务和备份操作才有可靠前提。因此本文会从“环境基线检查”的角度切入先建立一个完整的本地 KingbaseES 操作入口。读完本文后读者应该能够判断本机 KingbaseES 是否真正运行起来知道ksql工具在哪里能确认端口是否为54321也能用最小 SQL 验证system用户是否可以连接test数据库。很多人第一次接触数据库时会直接问“连接命令怎么写”这个问题当然重要但在真正动手之前更应该先确认另一件事本机上的 KingbaseES 到底有没有正常运行服务监听在哪个端口数据目录在哪里命令行工具能不能找到。KingbaseES 是电科金仓推出的企业级关系型数据库。官方快速上手手册中把访问 KingbaseES 分为客户端工具访问和编程接口访问其中ksql是最基础、最直接的命令行连接工具官方文档也说明KingbaseES 默认服务端口为54321。所以本系列会从最稳妥的方式开始先把 Windows 本地实例检查清楚再用ksql一步步操作数据库。本文会完成 5 件事看懂 KingbaseES 软件、实例、数据库之间的关系。找到 Windows 上的安装目录和ksql工具。确认 KingbaseES Windows 服务正在运行。查询并验证数据库监听端口。用一条 SQL 做最小可用性检查。本文使用的本地环境如下操作系统Windows KingbaseES 工具目录D:\Tools\Kingbase\ES\Server\bin 连接用户system 连接数据库test 主机地址localhost 服务端口54321 连接工具ksql文章目录KingbaseES Windows 单机实例运行机制与环境基线检查引言数据库实例为什么要先做基线检查一、先分清软件、实例、数据库不是一回事二、检查 1确认 ksql 工具目录存在如果提示“不是内部或外部命令”怎么办三、检查 2确认 Windows 服务正在运行四、检查 3确认数据库端口是 54321用 netstat 确认端口正在监听五、检查 4用 ksql 做一次最小连接验证六、检查 5退出前确认事务状态七、常见问题排查问题 1连接时报“connection refused”问题 2提示用户密码认证失败问题 3提示数据库 test 不存在问题 4端口 54321 被占用八、本文小结数据库实例为什么要先做基线检查数据库不是一个“打开就能用”的普通应用程序。对关系型数据库来说真正承担数据读写的是数据库实例而实例能否稳定工作至少取决于四个层面的状态层面关注点对后续操作的影响软件层KingbaseES 程序文件是否完整客户端工具是否可用决定ksql、备份工具、管理工具能否调用实例层Windows 服务是否运行数据目录是否存在决定数据库服务是否真正启动网络层端口是否监听主机地址是否可达决定客户端能否建立连接数据库层目标数据库、用户、权限是否正确决定连接后能否执行 SQL这也是企业数据库运维中常说的“环境基线”。基线不是为了多做几步而是为了在出现连接失败、端口冲突、权限不足时能快速定位问题。对于 KingbaseES 这类面向企业场景的数据库安装完成后的第一件事不应该是直接建表而应该先确认实例、端口、工具和数据库连接链路都处于可控状态。本文后面的检查动作实际上就是围绕这条连接链路展开ksql 客户端 - localhost - 54321 端口 - KingbaseES 实例 - test 数据库 - system 用户只要这条链路中的任一环节异常连接就可能失败。因此把“检查环境”作为第一篇文章是为了给后续建库、建表、事务和调优打一个稳定地基。一、先分清软件、实例、数据库不是一回事在 Windows 上安装完 KingbaseES 后很多初学者会把“安装了数据库软件”和“已经有可用数据库”混在一起。为了后面少踩坑先把这三个概念理清楚。概念可以理解为例子KingbaseES 软件数据库运行所需的程序文件ksql.exe、服务程序等数据库实例一套正在运行的数据库服务和数据目录某个 Windows 服务、某个kingbase.conf配置文件、某个数据目录具体数据库实例内部的一个逻辑数据库test、kingbase、后续要创建的业务库可以这样理解KingbaseES 软件 └─ 数据库实例 ├─ 数据目录 ├─ 配置文件 kingbase.conf ├─ Windows 服务 └─ 数据库test / kingbase / 业务库...后续执行这条连接命令时ksql -U system -d test -h localhost -p 54321它的意思是参数含义本文取值-U使用哪个数据库用户连接system-d连接哪个数据库test-h连接哪台机器localhost-p连接哪个端口54321其中localhost:54321指向的是本机正在运行的 KingbaseES 实例而test是实例中的一个数据库。二、检查 1确认 ksql 工具目录存在先打开 Windows 命令提示符。快捷方式Win R - 输入 cmd - 回车进入 KingbaseES 的工具目录这一步看似只是切换目录实际上是在确认客户端工具链是否完整。后续所有命令行操作都要依赖Server\bin目录下的工具例如ksql.exe负责交互连接其他备份、恢复、装载工具也通常位于这个目录。先进入这个目录可以避免因为环境变量未配置而出现“命令找不到”的问题。cd /d D:\Tools\Kingbase\ES\Server\bin说明一下这里的/d在 Windows 的cmd中如果当前盘符不是D:直接执行cd D:\xxx不一定会切换盘符加上/d可以同时切换盘符和目录。进入目录后查看是否存在ksql.exedir ksql.exe正常情况下会看到类似输出如果想进一步确认版本可以执行ksql --version可能会看到类似结果只要ksql.exe能被找到就说明命令行客户端工具这一关过了。如果提示“不是内部或外部命令”怎么办常见原因有两个现象原因处理方式在任意目录执行ksql报错没有配置环境变量先进入Server\bin目录再执行在Server\bin目录仍然找不到安装路径不一致用资源管理器搜索ksql.exe本系列默认不强制配置环境变量而是采用最稳妥的方式每次先进入工具目录。cd /d D:\Tools\Kingbase\ES\Server\bin这样文章中的命令对新手更友好也不依赖额外系统配置。三、检查 2确认 Windows 服务正在运行数据库实例必须处于运行状态ksql才能连接成功。Windows 上最直观的检查方式是打开服务管理器。执行Win R - 输入 services.msc - 回车在服务列表中查找和 KingbaseES 实例相关的服务。服务名称可能与你创建实例时填写的实例名有关例如可能包含KingbaseES kes_instance重点看两列检查项期望状态状态正在运行启动类型自动 或 手动如果服务未运行可以右键选择“启动”。四、检查 3确认数据库端口是 54321KingbaseES 官方快速上手手册中给出的默认服务端口是54321。如果安装时没有修改端口本地连接一般就是localhost:54321但际排查问题时不建议只凭记忆。最好从配置文件中确认一次。如果你的数据目录是D:\Tools\Kingbase\ES\kes_instance可以执行findstr /R ^\s*port D:\Tools\Kingbase\ES\kes_instance\kingbase.conf预期看到类似结果如果你的实例数据目录不同需要把路径替换成自己的实际路径。用 netstat 确认端口正在监听配置文件写了端口不代表服务一定已经成功监听。可以继续执行netstat -ano | findstr :54321如果端口正在监听可能看到类似这里的LISTENING说明本机已经有进程在监听54321端口。PowerShell 也可以这样查Get-NetTCPConnection-LocalPort 54321-State Listen如果只是想测试本机端口是否可连接Test-NetConnectionlocalhost-Port 54321重点看TcpTestSucceeded : True如果是False优先检查服务是否启动、端口是否写错、配置是否改过。五、检查 4用 ksql 做一次最小连接验证前面确认了三件事ksql.exe存在。KingbaseES Windows 服务正在运行。54321端口正在监听。现在就可以用ksql连接本地数据库。进入工具目录cd /d D:\Tools\Kingbase\ES\Server\bin连接test数据库这条命令把连接所需的四个核心要素都显式写出来用户、数据库、主机和端口。ksql -U system -d test -h localhost -p 54321输入system用户密码后如果连接成功会进入类似提示符这个提示符有两个信息片段含义test当前连接的数据库名#当前用户通常具有较高权限进入后执行第一条 SQLSELECTcurrent_database()ASdb_name,current_userASlogin_user,inet_server_port()ASserver_port,now()AScheck_time;预期结果类似这条 SQL 的价值在于它同时确认了字段验证内容current_database()当前确实连到了test数据库current_user当前登录用户是systeminet_server_port()服务端口是54321now()数据库可以正常执行 SQL六、检查 5退出前确认事务状态现在还没有执行任何修改数据的操作直接退出即可\q如果后续执行过INSERT、UPDATE、DELETE退出前要先确认事务是否已经提交。保存修改COMMIT;放弃修改ROLLBACK;再退出\q这是一个很小的习惯但非常重要。因为命令行操作数据库时很多事故都不是 SQL 不会写而是操作前后没有确认状态。七、常见问题排查问题 1连接时报“connection refused”可能原因原因检查方式处理服务没启动services.msc或Get-Service启动 KingbaseES 实例服务端口写错findstr查看kingbase.conf使用真实端口服务未监听端口netstat -anofindstr “:54321”问题 2提示用户密码认证失败可能原因原因处理用户名写错确认是system不是sys或其他用户密码写错输入安装实例时设置的system密码键盘大小写状态错误检查大小写和输入法问题 3提示数据库test不存在说明实例已经能连接但目标数据库名不对。可以尝试连接默认库或已知库ksql -U system -d kingbase -h localhost -p 54321连接成功后查看数据库列表\l确认存在的数据库名称再重新连接。问题 4端口 54321 被占用检查端口占用netstat -ano | findstr :54321根据最后一列 PID 查询进程tasklist | findstr PID号如果端口被其他程序占用需要调整实例端口或停止冲突程序。对于数据库实例端口修改不建议只改配置文件就直接启动最好结合管控工具或官方手册流程操作并做好变更记录。八、本文小结作为专栏开篇本文重点解决的是“环境是否可信”这个问题。我们没有急于进入业务建模而是先把 KingbaseES 单机实例在 Windows 上的几个关键状态逐一确认清楚程序文件、Windows 服务、配置端口、网络监听、数据库连接和最小 SQL 执行能力。本文没有急着建表也没有一上来讲复杂 SQL而是先完成了 KingbaseES 本地环境的“体检”ksql 工具存在 Windows 服务运行中 端口 54321 已确认 test 数据库可连接 最小 SQL 能执行到这里Windows 本地 KingbaseES 环境就具备了继续学习的基础。下一篇文章会正式进入ksql客户端本身不仅要连上数据库还要理解连接参数、会话状态、元命令、结果输出和脚本执行让命令行真正成为后续数据库实战的主要入口。