☰
GBase 8c用户、角色、权限体系详解
2026/10/17 16:05:16 网站建设 项目流程

一、核心概念定义

1.用户(User)

  • 定义:数据库的认证实体,用于登录数据库和执行操作
  • 特性:
    必须有唯一用户名
    可设置密码、有效期、资源限制
    可被授予角色或直接拥有权限

2.角色(Role)

  • 定义:权限的集合,是一组系统权限和对象权限的集合
  • 特性:
    可以嵌套(角色授予角色)
    不可用于登录(除非设置 LOGIN 属性)
    便于批量权限管理

3.权限(Privilege)

  • 定义:对数据库资源执行操作的许可;表示用户访问某个数据库对象的操作是否被允许,数据库对象包括表、函数、模式、序列等等,操作包括了增、删、改、查、创建等等。
  • 二维分类:
    • 系统权限:实例级操作(如创建数据库、管理用户)
    • 对象权限:对象级操作(如查询表、执行函数)

二、三者关系模型

关键特性:

  • 权限继承:角色 A 授予角色 B,则 B 拥有 A 的所有权限
  • 成员关系:用户加入角色,即获得该角色所有权限
  • 默认角色:用户可设置 SET DEFAULT ROLE 自动激活

三、权限详细分类

1.系统权限(9 种核心权限)

重要:系统权限不支持 GRANT/REVOKE,必须通过 CREATE / ALTER USER 管理!

2.对象权限

3.权限层级总结图

四、用户、角色与权限管理操作

1.用户全生命周期管理

-- 创建用户 CREATE USER dev_user WITH SYSADMIN PASSWORD 'Dev@2024' VALID UNTIL '2025-01-01' CONNECTION LIMIT 10; -- 修改属性 ALTER USER dev_user WITH NOSYSADMIN CONNECTION LIMIT 20; -- 锁定/解锁 ALTER USER dev_user ACCOUNT LOCK; ALTER USER dev_user ACCOUNT UNLOCK; -- 删除用户(CASCADE级联删除依赖对象,需慎用) DROP USER dev_user;​

2.用户与权限管理

2.1 系统权限

--添加授权 alter user test with sysadmin createrole createdb ; --取消授权 alter user test with nocreaterole nocreatedb noSysadmin ;​

2.2 对象权限

创建只读权限用户

-- 以test用户,对某库的public为例 CREATE USER test PASSWORD 'Czt@123456'; grant usage on schema public to test; -- 只读public下单表 table1grant select on table public.table1 to test; -- 只读public下所有表 grant select on all tables in schema public to test;​

创建普通用户 create 权限和对象所有权限

-- 以test1用户,对try库的public为例 CREATE USER test1 PASSWORD 'Test@2025'; GRANT CREATE ON DATABASE try TO test1; GRANT CREATE ON schema public TO test1; grant all on all tables in schema public to test1;​

查看 test 用户对 public 下所有表的 privilege_type

try=# SELECT grantee,table_schema,table_name, string_agg( privilege_type,', ' ) as privilege_type FROM information_schema.role_table_grants where grantee='test' group by table_name,table_schema,grantee; grantee | table_schema | table_name | privilege_type---------+--------------+-------------------+---------------------------------------------------------------------------------------------------- test | public | t_json | INSERT, SELECT, UPDATE, DELETE, TRUNCATE, REFERENCES, TRIGGER, ALTER, DROP, COMMENT, INDEX, VACUUM test | public | test | INSERT, SELECT, UPDATE, DELETE, TRUNCATE, REFERENCES, TRIGGER, ALTER, DROP, COMMENT, INDEX, VACUUM test | public | test11 | INSERT, SELECT, UPDATE, DELETE, TRUNCATE, REFERENCES, TRIGGER, ALTER, DROP, COMMENT, INDEX, VACUUM test | public | all_db_links | INSERT, SELECT, UPDATE, DELETE, TRUNCATE, REFERENCES, TRIGGER, ALTER, DROP, COMMENT, INDEX, VACUUM test | public | hte_as_syslog | INSERT, SELECT, UPDATE, DELETE, TRUNCATE, REFERENCES, TRIGGER, ALTER, DROP, COMMENT, INDEX, VACUUM test | public | dual | INSERT, SELECT, UPDATE, DELETE, TRUNCATE, REFERENCES, TRIGGER, ALTER, DROP, COMMENT, INDEX, VACUUM test | public | spatial_ref_sys | INSERT, SELECT, UPDATE, DELETE, TRUNCATE, REFERENCES, TRIGGER, ALTER, DROP, COMMENT, INDEX, VACUUM (7 rows)​

3.角色与权限管理

-- 授予对象权限给角色 GRANT SELECT, INSERT, UPDATE ON ALL TABLES IN SCHEMA app TO app_developer; -- 将角色授予用户 GRANT app_developer TO dev_user;

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询