chapter 6. 数据库用户和权限
table of contents
6.1. 数据库用户
6.2. 用户属性
6.3. 组
6.4. 权限
6.5. 函数和触发器
每个数据库集群都包含一个数据库用户的集合。 这些用户是和那些在同一个服务器上运行的操作系统的用户相独立的。 用户拥有数据库对象(比如说,表)以及可以把这些对象的权限赋予 其它用户,这样就能控制谁可以访问哪些对象。
本章描述如何创建和管理用户,以及介绍权限系统。 有关各种类型的数据库对象和权限的效果可以在 postgresql 7.3 用户手册 中找到。
6.1. 数据库用户
数据库用户从概念上与操作系统用户是完全无关的. 在实际使用中把它们对应起来可能比较方便,但不是必须的. 数据库用户名在整个数据库集群中是全局的(而不是每个库不同). 要创建一个用户,使用 sql 命令 create user:
create user name
name 遵循 sql 标识的规则: 要么完全没有特殊字符,要么用双引号引起. 要删除一个现有用户,使用类似的命令 drop user:
drop user name
为了方便,shell 脚本createuser和 dropuser 提供了对了这些 sql 命令的封装. 我们可以在 shell 命令上直接调用它们:
createuser name
dropuser name
为了能初创数据库系统,新建立的数据库总是包含一个预定义的用户. 这个用户将有固定的 id 1,并且缺省时(除非在运行 initdb 时更改过)他将和 初始化该数据库集群的用户有相同的名称。 通常,这个用户叫postgres. 为了创建更多用户,你必须首先以这个初始用户身份联接.
一个和数据库的活跃连接只能有一个用户身份进行。 和特定数据库联接的用户名是由初始化联接请求的应用以应用相关的方式声明的, 比如,psql 程序使用-u命令行选项声明它代表的进行联接 的用户.许多应用以当前操作系统的用户名为缺省(这样的应用包括 createuser 和 psql)。 这样我们就可以很方便地维护这两个用户集合之间地映射关系。
一个客户端联接可以用来联接的数据库用户集合是由客户 认证设置决定的,在 chapter 4 里面有解释.(因此,一个客户端并不局限于以它的操作系统用户 同名的用户进行联接,就象你登录系统的名称不一定要是你的真实 名称一样.)因为用户地身份决定了一个已连接地客户端可用的权限, 所以在多用户环境里仔细配置这些内容是非常重要的。
6.2. 用户属性
一个数据库用户可以有一系列属性,这些属性定义他的权限,以及与 客户认证系统的交互.
superuser(超级用户)
数据库超级用户超越所有权限检查.同样,只有超级用户才能 创建新的用户.要创建数据库超级用户,用 create user name createuser.
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器