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

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

环境信息:

端口:19988

目标库:OS_Core、OS_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场景】的修改版本笔记。

相关推荐
白帽攻防录1 小时前
SRC 挖洞:Roundcube 预认证 SQL 注入深度复盘,CVE-2026-48842 preg_replace 转义绕过怎么打穿邮件系统
网络·数据库·sql·网络安全·sql注入
꯭自꯭闭꯭1 小时前
达梦SQL优化相关
linux·运维·数据库·sql
ZhangJun952 小时前
在 32GB 内存电脑上本地搭建 Qwen3.6-35B-A3B 大模型踩坑实录
运维·人工智能·阿里云·ai·软件构建
一条破秋裤2 小时前
Linux 共享内存通信:POSIX 共享内存与 mmap
linux·运维·服务器
贵州山魈羡民3 小时前
【玩转手机】通过 Podroid 上的 Alpine 部署 1Panel,把微型服务器装进口袋
运维·服务器
小白的码BUG之路3 小时前
Docker -- 构建nacos镜像
运维·docker·容器
FakeOccupational3 小时前
【电路笔记 信号】DBPSK 波形查找表+脉冲成形(升余弦+根升余弦滤波)
开发语言·笔记
谷哥的小弟4 小时前
CentOS Stream浴火重生
linux·运维·centos
程序员-Benothing5 小时前
Shell输入输出详解:read、echo、printf、颜色输出
linux·运维·服务器
和裕5 小时前
全纸结构重型纸箱能否满足 1 吨以上设备出口熏蒸豁免要求?通关合规性全解析
大数据·运维·网络·人工智能·算法