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

相关推荐
xuefeiniao2 小时前
PHP2Shell漏洞修复
运维·服务器·php
ss2732 小时前
AI时代首先数据库-PostgreSQL实战笔记 | 22 PostgreSQL实例与集群
数据库·笔记·postgresql
ss2732 小时前
AI时代首先数据库-PostgreSQL实战笔记 | 21 PostgreSQL进程与内存架构介绍
数据库·笔记·postgresql
便利店10243 小时前
系统活动一抓留存!深入 Linux C/C++ 调试工具之 sysdig
linux·运维·服务器·sysdig
智能运维指南4 小时前
企业 IT 运维自动化平台怎么选?从场景匹配到 POC 验证的完整评估框架
运维·自动化·自动化运维·嘉为蓝鲸
toooooop84 小时前
CentOS 7 内核 3.10.0-1160.119.1 升级指南
linux·运维·centos
云飞云共享云桌面4 小时前
广东东莞制造工厂10人共享一台三维设计服务器
运维·服务器·3d·自动化·制造
摇滚侠5 小时前
《Java并发编程之美》第 4 章 Java 并发包中原子操作类原理剖析 阅读笔记 7
java·笔记·python
kkkkkkkkkk_Z5 小时前
新手自学嵌入式 | 学习日记:Linux驱动复习之系统移植(U-Boot篇)
linux·运维·学习