使用角色的概念管理数据库访问权限。
角色可以是数据库用户和一组数据库用户,可拥有数据库对象。
- 1.数据库角色
独立于操作系统用户。
创建角色: create role name;
删除角色: drop role name;
确定现有角色: select * from pg_roles; 或者\du 列出现有角色。
新安装的数据库默认有一个预定义角色:postgres.
给定客户端连接可以连接的数据库角色集,由客户端身份验证设置决定.
- 2. 角色属性
这些属性定义其权限并与客户端身份验证系统交互。
登录权限(login privilege):
具有login属性的角色才能用作数据库连接的初始角色名称。create role name login;
超级用户状态(superuser status):
数据库超级用户绕过所有权限检查,但登录权限除外. create role name superuser;
database creation
授予角色创建数据库的权限: create role name createdb;
role creation
授予角色创建更多角色的权限: create role name createrole;
initiating replication
授予角色启动流复制的权限: create role name REPLICATION LOGIN;
password
数据库密码与操作系统密码分开 使用时创建角色时指定密码。CREATE ROLE name PASSWORD 'string';
优秀做法:
创建具有CREATEDB和CREATEROLE权限但不是超级用户的角色,然后将此角色用于数据库和角色的所有日常管理.
- 3 角色成员:
可以将权限授予整个组或从组中撤销。
先创建角色: create role name;
组角色存在后,可使用grant和revoke命令添加和删除成员。
grant grouprole to role1...;
revoke grouprole from role1...;
数据库不允许您设置循环成员资格循环。此外,不允许授予角色成员资格 PUBLIC。
例如:
CREATE ROLE joe LOGIN INHERIT;
CREATE ROLE admin NOINHERIT;
CREATE ROLE wheel NOINHERIT;
GRANT admin TO joe;
GRANT wheel TO admin;
组角色的成员可以通过两种方式使用角色的权限.
设置临时组角色: set role name;
重置角色: reset role;
删除组角色: drop role name;
数据库会话可以访问组角色的权限,创建的任何数据库对象都被组角色拥有。
成员角色会继承组角色的权限。
用户在角色执行时不会自动继承权限。PostgreSQL默认为所有角色提供 INHERIT属性.
创新互联公司是一家集网站建设,清河门企业网站建设,清河门品牌网站建设,网站定制,清河门网站建设报价,网络营销,网络优化,
清河门网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。- 4 删除角色:
角色可以拥有数据库对象并且可以拥有访问其他对象的权限。
删除角色前,先删除该角色拥有的任何对象或将其重新分配给其他所有者; 并且必须撤消授予该角色的任何权限。
ALTER TABLE bobs_table OWNER TO alice;
或者:
REASSIGN OWNED命令可用于将要删除的角色所拥有的所有对象的所有权重新分配给单个其他角色.必须在包含该角色所拥有的对象的每个数据库中运行它.
DROP OWNED不会删除整个数据库或表空间.
删除已用于拥有对象的角色的最常用方法是:
REASSIGN OWNED BY doomed_role TO successor_role;
DROP OWNED BY doomed_role;
-- 在集群
DROP ROLE doomed_role;
- 5. 默认角色:
可访问常用的功能和信息。
角色 允许访问
pg_read_all_settings 读取所有配置变量,仅对超级用户可见的变量。
pg_read_all_stats 阅读所有pg_stat_ *视图并使用各种与统计相关的扩展,仅对超级用户可见的扩展。
pg_stat_scan_tables 执行可能ACCESS SHARE会对表进行锁定的监视函数。
pg_signal_backend 将信号发送到其他后端(例如:取消查询,终止)。
pg_monitor 读取/执行各种监视视图和功能。这个角色的成员pg_read_all_settings,pg_read_all_stats和pg_stat_scan_tables。
管理员监控数据库服务器的目的配置:
pg_monitor,pg_read_all_settings,pg_read_all_stats和pg_stat_scan_tables角色,它们授予一组公共权限,允许角色读取通常仅限于超级用户的各种有用的配置设置,统计信息和其他系统信息。
管理员可以使用GRANT命令向用户授予对这些角色的访问权限:
GRANT pg_signal_backend TO admin_user;
另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
当前标题:PostgreSQL数据库角色(五)-创新互联
URL标题:
http://njwzjz.com/article/dcpsho.html