专业只做数据库实训和认证的品牌机构

微信公众号新浪微博
免费咨询电话:400-0909-964
当前位置: 网站首页 > postgresql > 教程 > PostgreSQL基础教程:用户角色

PostgreSQL基础教程:用户角色

文章来源: 更新时间:2020/6/2 17:20:26

在线老师点击咨询:

最新学讯:近期OCP认证正在报名中,因考试人员较多请尽快报名获取最近考试时间,报名费用请联系在线老师,甲骨文官方认证,报名从速!

我要咨询

用户角色是每个数据库都会涉及到的内容,那么PostgreSQL中的用户和角色是怎么一回事呢?我们一起来看看。

1. 用户角色概要

数据库用户user和操作系统用户不同,但是可以通过文件做映射;

角色 role是一系列相关权限的集合,跟用户user的唯一区别是初始创建不具有login权限,但是可以授予;

pg通过角色role来给用户授予权限,管理数据库访问权限;

role在整个cluster中是全局性的,即同一个服务器的不同数据库中,看到的用户是相同的,授予权限后可以访问操作集簇下的数据库对象。

2. 用户角色管理

分类

1)超级用户 -》postgres

2)普通用户 -》create user username;

创建用户

方式1:

在系统命令行使用createuser命令中创建

createuser --help

createuser username

方式2:

在psql命令行使用CREATE ROL[USER]E指令创建

\h create role|user

create role[user] rolename;

创建用户详细语法

CREATE USER name [ [ WITH ] option [ ... ] ]

这里的option可以是:

SUPERUSER | NOSUPERUSER

| CREATEDB | NOCREATEDB

| CREATEROLE | NOCREATEROLE

| CREATEUSER | NOCREATEUSER

| INHERIT | NOINHERIT #角色是其他角色的成员,这些子句决定新角色是否从那些角色中“继承”特权

| LOGIN | NOLOGIN

| REPLICATION | NOREPLICATION

| BYPASSRLS | NOBYPASSRLS #决定是否一个角色可以绕过每一条行级安全性(RLS)策略。

| CONNECTION LIMIT connlimit

| [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password'

| VALID UNTIL 'timestamp'

| IN ROLE role_name [, ...]

| IN GROUP role_name [, ...]

| ROLE role_name [, ...]

| ADMIN role_name [, ...] #ADMIN子句与ROLE相似,让它们能够把这个角色中的成员关系授予给其他人。

| USER role_name [, ...]

| SYSID uid

创建角色详细语法

CREATE ROLE name [ [ WITH ] option [ ... ] ]

这里的option可以是:

SUPERUSER | NOSUPERUSER

| CREATEDB | NOCREATEDB

| CREATEROLE | NOCREATEROLE

| CREATEUSER | NOCREATEUSER

| INHERIT | NOINHERIT

| LOGIN | NOLOGIN

| REPLICATION | NOREPLICATION

| CONNECTION LIMIT connlimit

| [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password'

| VALID UNTIL 'timestamp'

| IN ROLE role_name [, ...]

| IN GROUP role_name [, ...]

| ROLE role_name [, ...]

| ADMIN role_name [, ...]

| USER role_n

常用属性说明

login只有具有 LOGIN 属性的角色可以用做数据库连接的初始角色名。

superuser数据库超级用户

createdb创建数据库权限

createrole允许其创建或删除其他普通的用户角色(超级用户除外)

replication做流复制的时候用到的一个用户属性,一般单独设定。

password在登录时要求指定密码时才会起作用,比如md5或者password模式,跟 客户端的连接认证方式有关

inherit用户组对组员的一个继承标志,成员可以继承用户组的权限特性

注意:

角色属性LOGIN、SUPERUSER和CREATEROLE被视为特殊权限,它们不会像其它数据库对象的普通权限那样被继承。

示例:

CREATE ROLE r3 SUPERUSER;

CREATE ROLE r4 CREATEDB;

CREATE ROLE r5 LOGIN;

CREATE USER u2 encrypted PASSWORD '123456' VALID UNTIL '2018-08-16';

注: 属性LOGIN、SUPERUSER和CREATEROLE被视为特殊权限,它们不会像其它数据库对象的普通权限那样被继承。

查看用户角色列表

\du

示例:

db_t=# \du

List of roles

Role name | Attributes | Member of

-----------+------------------------------------------------------------+-----------

postgres | Superuser, Create role, Create DB, Replication, Bypass RLS | {}

role1 | Cannot login | {}

role_t | Superuser, Cannot login | {}

user_t | Superuser | {}

中间内容即为角色用户的属性列表,属性会蕴含一些权限含义,后边的字段是表示该用户还在哪个用户组中。

修改角色命令及在线帮助

\h alter role[user]

其他的修改用户的命令还包括:

1、重命名:

alter user UserName rename to NewName;

2、该用户的参数配置参数:

alter user UserName set ParameterName to value;

3、重置配置参数:

alter user UserName reset ParameterName / all;

示例:在创建用户时设定登录权限。

create role r1 ;

create user u1;

连接验证,用户u1可以连接访问数据库,角色r1则不能!

ALTER ROLE r1 WITH LOGIN;

修改角色r1,添加login属性,再次验证角色r1此时可以连接访问数据库。

角色组

包含其他用户或角色的角色就是角色组。

示例:

create r2

grant r1 to r2;

删除

1、系统命令行方式删除

dropuser username;

2、sql环境方式删除

\h drop role [user];

示例:

drop role r1;

注意事项:

1、只用超级用户能够删除超级用户

2、只有具有createrole权限的用户能删除非超级用户

3、删除用户前,需要先删除依赖该用户的对象、权限等信息

4、任何属于该组角色的对象都必须先被删除或者将对象的所有者赋予其它角色,任何赋予该组角色的权限也都必须被撤消。

5、删除组role只会删除组的role本身,组的成员并不会被删除

6、删除该角色前,你必须删除(或者重新授予所有 权)它所拥有的所有对象并且收回该已经授予给该角色的在其他对象上的特权。REASSIGN OWNED和DROP OWNED 命令可以用于这个目的。

本文地址:http://www.cuug.com.cn/postgresql/jiaocheng/24733923047.html 转载请注明!


在线预约 抢先报名 获取课程排期

Oracle培训机构

金牌讲师<>

冉乃纲-老师CUUG金牌讲师
冉老师 CUUG金牌讲师 Oracle及RedHat高级讲师、Unix/Linux 资深专家...[详细了解老师]

免费咨询上课流程 客服在线中

陈卫星-老师CUUG金牌讲师
陈老师 CUUG金牌讲师 精通Oracle管理、备份恢复、性能优化 11年Ora...[详细了解老师]

免费咨询上课流程 客服在线中

选学校如何选择适合自己的学校

CUUG -CHINA UNIX USER GROUP,是国际UNIX组织UNIFORUM的中国代表,是国内悠久的专业UNIX培训机构,被誉为中国UNIX 的摇篮。多年来,以提高教学质量为本,强调素质教育,积极引进、消化国外的新技术,有效的结合中国....[详情]

一站式服务(从入学到就业一帮到底)

入学

学习

就业

实操

食宿
地址:北京市海淀区田村山南路35号院17号楼
课程咨询:010-59426307 010-59426319 400-0909-964
企业服务:137 1818 8639(陈经理)
部分信息来源于网络,如有错误请联系指正!
版权所有@北京神脑资讯技术有限公司 (CUUG,中国UNIX用户协会) Copyright 2016 ALL Rights Reserved 京ICP备11008061号-1