PG基础篇--逻辑结构管理(用户及权限管理)
Posted 进击的CJR
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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权限
允许在指定数据库中创建临时表的权限
连接某个数据库的权限
在模式中创建数据库对象的权限
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)最后是操作表中的某些字段的权限
以上是关于PG基础篇--逻辑结构管理(用户及权限管理)的主要内容,如果未能解决你的问题,请参考以下文章