返回介绍

I. 教程

II. SQL 语言

III. 服务器管理

IV. 客户端接口

V. 服务器端编程

VI. 参考手册

VII. 内部

VIII. 附录

18.2. 角色属性

发布于 2019-09-30 03:07:15 字数 2024 浏览 923 评论 0 收藏 0

一个数据库角色可以有一系列属性,这些属性定义他的权限,以及与客户认证系统的交互。

登录

只有具有 LOGIN 属性的角色才可以用作数据库连接的初始角色名。一个带有 LOGIN 属性的角色可以认为是和"数据库用户"相同的事物。要创建一个具有登录权限的角色,用下列之一

CREATE ROLE name LOGIN;
CREATE USER name;

除了 CREATE USER 默认赋予 LOGIN 之外,CREATE USER 等价于 CREATE ROLE(默认不赋予 LOGIN)。

超级用户

数据库超级用户超越所有权限检查。这是一个危险的权限,应该小心使用;最好使用非超级用户完成你的大多数工作。要创建数据库超级用户,用 CREATE ROLE name SUPERUSER 命令。你必须用已经是超级用户的角色执行这条命令。

创建数据库

角色要想创建数据库,必须明确给出权限(对于超级用户是例外,因为他们超越所有权限检查)。要创建这样的角色,用 CREATE ROLE name CREATEDB 命令。

创建角色

角色要想创建角色,必须明确给出权限(对于超级用户是例外,因为他们超越所有权限检查)。要创建这样的角色,用 CREATE ROLE name CREATEROLE 命令。一个带有 CREATEROLE 属性的角色也可以更改和删除其它角色,以及给其它角色赋予或者撤销成员关系。不过,要创建、更改、删除一个超级用户角色的成员关系,需要具有超级用户属性;只有 CREATEROLE 还不够。

口令

只有在客户认证方法要求与数据库建立连接必须使用口令的时候,口令才比较重要。password, md5, crypt 认证方法使用口令。数据库口令与操作系统口令是无关的。在创建角色的时候可以这样声明一个口令:CREATE ROLE name PASSWORD 'string'

一个角色的属性可以在创建后用 ALTER ROLE 修改。参考 CREATE ROLEALTER ROLE 的手册获取细节。

【提示】创建一个具有 CREATEDBCREATEROLE 权限,但是并非超级用户的角色是一个很好的习惯,你可以使用这个角色进行所有日常的数据库和角色管理。这个方法避免了以超级用户操作时,发生误操作导致的严重后果。

一个角色也可以为许多运行时配置设置针对其个人的缺省,那些配置在章17里描述。比如,如果出于某种原因你想在所有你做的连接中关闭索引扫描(不是个好主意),你可以用:

ALTER ROLE myname SET enable_indexscan TO off;

这样就会保存该设置(但是不是立即设置)。然后,在这个角色随后的连接中就好像在会话开始之后都立即 SET enable_indexscan TO off; 了一样。你也可以在会话中修改这个设置;它只是缺省。要撤销任何这样的设置,使用 ALTER ROLE rolename RESET varname; 。请注意,对那些没有 LOGIN 属性的角色,这些角色相关的缺省值几乎没什么用,因为它们从来不会被调用。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文