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

相关推荐
葡萄成熟时 !6 小时前
JAVA 常用API学习笔记
java·笔记·学习
DevOpenClub7 小时前
个人公开市场研究笔记功能需求文档
笔记
JoyCong19988 小时前
ToDesk个人版、专业版、游戏版、设计版、性能版、团队版权益介绍
大数据·运维·游戏·远程工作·远程操作
Elastic 中国社区官方博客10 小时前
ES95:面向 Elasticsearch 时间序列指标的自适应压缩
大数据·运维·elasticsearch·搜索引擎·架构·全文检索
mqiqe11 小时前
AgentScope Java 2.0 Agent 状态存储(AgentStateStore)深度解析:构建可恢复、可扩展的智能体运行时
java·运维·网络
mennekes11 小时前
数据中心安全配电设备如何选择?
运维·人工智能·科技·安全·制造
不会代码的小猴12 小时前
7. JSON
开发语言·c++·笔记·qt·算法·json
开始学AI12 小时前
Codex2API Docker 使用宿主机代理:OAuth Token 兑换 403 问题排查与解决方案
运维·docker·容器
smilejingwei12 小时前
Trae+SQLazy 实践 SQL 国产化移植:Oracle => 达梦
数据库·sql·oracle
晨枫阳13 小时前
@changesets/cli是什么?哪些情况下需要使用?怎么使用
linux·运维·ubuntu