PG基础篇--逻辑结构管理(用户及权限管理)

得意犹堪夸世俗,诏黄新湿字如鸦。这篇文章主要讲述PG基础篇--逻辑结构管理(用户及权限管理)相关的知识,希望能为你提供帮助。
用户与角色
在postgreSQL中,角色和用户是没有区别的,一个用户也是一个角色,可以把一个用户的权限赋予给另一个用户。用户和角色在整个数据库实例中是全局的,在同一个实例中的不同数据库中,看到的用户都是相同的。
在初始化数据库系统时有一个预定义的超级用户,这个用户的名称和初始化该数据库的操作系统用户名相同。
在pg中,用户和角色是没有区别的,除了create  user默认创建出来的用户有login权限,create  role创建出来的用户没有login权限之外,create rule与create  user没有其他的区别。
如何创建用户

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

where option can be:

SUPERUSER | NOSUPERUSER#是否是超级用户
| CREATEDB | NOCREATEDB#是否具有create database权限
| CREATEROLE | NOCREATEROLE #是否具有创建其他角色的权限
| INHERIT | NOINHERIT#创建的用户如果拥有角色,是否自动拥有角色权限
| LOGIN | NOLOGIN#是否有LOGIN权限
| REPLICATION | NOREPLICATION #复制权限
| BYPASSRLS | NOBYPASSRLS
| CONNECTION LIMIT connlimit
| [ ENCRYPTED ] PASSWORD password | PASSWORD NULL
| VALID UNTIL timestamp#密码失效时间
| IN ROLE role_name [, ...]
| IN GROUP role_name [, ...]
| ROLE role_name [, ...]
| ADMIN role_name [, ...]#with admin option权限
| USER role_name [, ...]
| SYSID uid



权限管理在pg中,每个数据库的逻辑结构对象都有一个所有者,任何数据库对象都是属于某个用户的,所有不用把对象的权限再赋予所有者,因为所有者默认就拥有所有的权限。所有者也隐式的拥有把操作该对象的权限赋予其他用户的权利


权限分类创建用户时指定的权限
超级用户权限
创建数据库权限
是否有login权限
也可以通过alter role来修改
需要grant或revoke的权限
在数据库中创建schema权限
允许在指定数据库中创建临时表的权限
连接某个数据库的权限
在模式中创建数据库对象的权限
【PG基础篇--逻辑结构管理(用户及权限管理)】select、DML操作权限
序列查询,函数使用,触发器权限
指定表,索引到表空间的权限
grant some_privileges on database_object_type object_name to role_name;
revoke some_privileges on database_object_type object_name from role_name;

role_name                              指用户或者角色
some_privileges              指权限
database_object_type指数据库对象,如table、schema、sequence
grant select on table mytab to public;
pg没有DDL权限,是否创建表,是看在schema中是否具有create的权限。


权限总结权限是按层次进行管理的
1)首先管理赋在用户特殊属性上的权限,如超级用户的权限,创建数据库的权限,创建用户的权限,LOGIN权限等。
2)然后是在数据库中创建模式的权限。
3)接着是在模式中创建数据库的对象的权限,创建表,索引等。
4)之后是查询表,向表中插入数据,更新表,删除表中的数据权限。
5)最后是操作表中的某些字段的权限











    推荐阅读