人大金仓 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场景】的修改版本笔记。

相关推荐
韭菜炒鸡肝天1 小时前
VTK开发笔记(一):VTK介绍,Qt..+VSx+VTK.编译
开发语言·笔记·qt
我不管我就要叫小猪1 小时前
嵌入式Linux----网络通信
linux·运维·服务器
江湖有缘2 小时前
Docker实战 :使用Docker部署OneTerm堡垒机
运维·docker·容器
姜太小白2 小时前
【Linux】df -h 卡住问题的通用排查与解决方案总结
linux·运维·php
fengyehongWorld3 小时前
Linux 终端快捷键
linux·运维
看昭奚恤哭3 小时前
平滑加权轮询负载均衡的底层逻辑
运维·负载均衡
hyf3266334 小时前
泛程序:从零开始搭建稳定程序项目框架
运维·服务器·爬虫·百度·seo
为自己_带盐4 小时前
安敢越雷池一步?浅尝雷池WAF社区版
运维·web安全
峥无4 小时前
C++11 深度详解:现代 C++ 基石全梳理
开发语言·c++·笔记