人大金仓 KingbaseES V8 只读账号创建完整运维笔记

适用版本:KES V8(不支持 ALL VIEWS 独立语法,ALL TABLES 包含表+视图

环境信息:

端口:19988

目标库:OS_CoreOS_Core_GPS

账号:dtselece,密码:Fllkl00@jkj984

一、前置说明

  1. 必须使用超级管理员账号(system)执行脚本
  2. KES V8 特性:GRANT SELECT ON ALL TABLES 同时授权【普通表 + 视图】,禁止单独写 ALL VIEWS,会报语法错误
  3. 脚本内 public 为默认模式,业务如果使用自定义schema,全局替换为真实schema名
  4. ALTER DEFAULT PRIVILEGES:控制后续新建对象自动赋予只读权限(可选,生产建议加上)

二、完整可直接执行SQL脚本

sql 复制代码
-- ======================
-- 步骤1:创建登录用户
-- ======================
CREATE USER dtselece WITH PASSWORD 'Fllkl00@jkj984';

-- ======================
-- 步骤2:授予数据库连接权限
-- ======================
GRANT CONNECT ON DATABASE OS_Core TO dtselece;
GRANT CONNECT ON DATABASE OS_Core_GPS TO dtselece;

-- ======================
-- 步骤3:OS_Core 库权限分配
-- ======================
\c OS_Core
-- 允许访问schema
GRANT USAGE ON SCHEMA public TO dtselece;
-- 当前已有表、视图只读权限
GRANT SELECT ON ALL TABLES IN SCHEMA public TO dtselece;
-- 后续新建表/视图自动授予查询权限
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO dtselece;
-- 序列只读(仅查询,禁止nextval修改)
GRANT SELECT ON ALL SEQUENCES IN SCHEMA public TO dtselece;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON SEQUENCES TO dtselece;

-- ======================
-- 步骤4:OS_Core_GPS 库权限分配
-- ======================
\c OS_Core_GPS
GRANT USAGE ON SCHEMA public TO dtselece;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO dtselece;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO dtselece;
GRANT SELECT ON ALL SEQUENCES IN SCHEMA public TO dtselece;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON SEQUENCES TO dtselece;

三、执行方式

方式1:ksql命令行执行

bash 复制代码
ksql -p 19988 -U system -d OS_Core
# 粘贴上面全部SQL执行

注意:\c 库名 是ksql元命令,图形化工具(DBeaver/金仓管理工具)部分支持,若报错,分开连接不同数据库执行权限语句

方式2:图形工具兼容方案(规避\c切换库命令)

分两段执行:

  1. 连接 OS_Core 执行OS_Core权限语句
  2. 重新连接 OS_Core_GPS 执行GPS库权限语句

四、权限验证SQL(登录dtselece执行)

sql 复制代码
-- 正常:返回数据
SELECT * FROM 任意表 LIMIT 1;
-- 正常:视图也能查询
SELECT * FROM 任意视图 LIMIT 1;

-- 预期报错:权限不足
INSERT INTO 任意表(字段) VALUES();
UPDATE 任意表 SET 字段='';
DELETE FROM 任意表;

五、运维备用脚本

1. 回收权限、删除账号(下线使用)

sql 复制代码
REVOKE ALL ON DATABASE OS_Core FROM dtselece;
REVOKE ALL ON DATABASE OS_Core_GPS FROM dtselece;
DROP USER IF EXISTS dtselece;

2. 修改账号密码

sql 复制代码
ALTER USER dtselece WITH PASSWORD '新密码';

六、安全加固(生产可选)

1. 访问IP限制

修改 data/pg_hba.conf,仅允许指定IP访问该账号

ini 复制代码
# 示例:仅192.168.1.100可连接dtselece
host  all  dtselece  192.168.1.100/32  scram-sha-256

修改后重载配置:

sql 复制代码
SELECT sys_reload_conf();

七、常见踩坑清单 ⚠️

  1. ❌ 错误写法(KES V8语法不支持)
sql 复制代码
GRANT SELECT ON ALL VIEWS IN SCHEMA public TO dtselece;

✅ 正确:直接使用 ALL TABLES 包含视图

  1. ❌ 新建表无法查询

    原因:未执行 ALTER DEFAULT PRIVILEGES,只会授权当前已存在的表

  2. ❌ 报schema访问拒绝

    忘记执行 GRANT USAGE ON SCHEMA public TO dtselece;

  3. ❌ 切换库命令 \c 在部分GUI工具失效

    解决方案:分开连接数据库执行权限语句

八、连接串参考(应用测试)

复制代码
jdbc:kingbase8://IP:19988/OS_Core?currentSchema=public
用户名:dtselece
密码:Fllkl00@jkj984

如果你需要,我可以再补充一份【多自定义Schema场景】的修改版本笔记。

相关推荐
hanbo17C21 小时前
企业官网能不能看出公司实力?选建站公司前,先看这6条硬标准
运维·服务器·前端
小程序设计1 小时前
基于某数据管理系统的目标遍历漏洞成因与防御设计技术与实现
运维·网络
33三 三like1 小时前
Jiangxi
linux·运维·服务器
2601_953988071 小时前
Ricon组态 - 让数据可视化如此简单
运维·后端·物联网·数学建模·前端框架·c4前端
智者知已应修善业1 小时前
【如何将此图变为000到101就返回】2026-4-7
驱动开发·经验分享·笔记·硬件架构·硬件工程
小马同学-2 小时前
01 容器技术概述
运维·docker·云计算
海宇大数据2 小时前
零信任架构实战:基于海宇单人婚姻状态查询构建自动化线上房产交易合规网关
运维·人工智能·架构·自动化
小程序设计2 小时前
基于SQL与漏斗模型的社群App优化研究
数据库·sql
bloglin999992 小时前
windows中如何像linux的lsof一样查看端口
运维
网硕互联的小客服2 小时前
服务器如何检查Web端口(如80/443)是否正常监听?
运维·服务器