原文链接:www.gbase.cn/community/p…
更多精彩内容尽在南大通用GBase技术社区,南大通用致力于成为用户最信赖的数据库产品供应商。
一、核心概念定义
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;
原文链接:www.gbase.cn/community/p…
更多精彩内容尽在南大通用GBase技术社区,南大通用致力于成为用户最信赖的数据库产品供应商。