pg用户、角色、权限

pg 角色(role=用户(user

一系列权限的集合,设定好的角色a、b、c等等,按需将角色给到用户,方便不用一个个权限给用户。

一个用户也是一个角色,可以把用户赋予给另个用户。

用户、角色是全局性的,不同库中看到的用户都是相同的。

初始化数据库时自动建了个与安装用户(系统)同名的超级用户,一般是postgres

默认建出来的user有登陆权限,role没有登陆权限。其他没区别。

任何数据库的逻辑结构对象(包括库)都属于某个用户。

创建用户

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

=

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

opyion可以是以下内容

·SUPERUSER|NOSUPERUSER:表示创建出来的用户是否为超级用户。当然只有超级用户才能创建超级用户。

·CREATEDB|NOCREATEDB:指定创建出来的用户是否有执行CREATE DATABASE的权限。

·CREATEROLE|NOCREATEROLE:指定创建出来的用户是否有创建其他角色的权限。

·CREATEUSER|NOCREATEUSER:指定创建出来的用户是否有创建其他用户的权限。

·INHERIT|NOINHERIT:如果创建的用户拥有某个或某几个角色,这时若指定INHERIT,则表示用户自动拥有相应角色的权限,否则该用户没有相应角色的权限。

·LOGIN|NOLOGIN:创建出来的用户是否有LOGIN权限,可以临时禁止用户的LOGIN权限,此时用户无法连接到数据库。

·CONNECTION LIMIT connlimit:这个参数指明了该用户可以使用的并发连接的数量。默认值是“-1”,表示没有限制。

·[ENCRYPTED|UNENCRYPTED]PASSWORD 'password':用于控制存储在系统表中的口令是否加密。

·VALID UNTIL 'timestamp':密码失效时间,如果不指定该子句,那么口令将永远有效。

·IN ROLE role_name [,...]:指定用户成为哪些角色的成员,请注意,没有任何选项可以把新角色添加为管理员,只有使用独立的GRANT命令才行。

·IN GROUP role_name [,...]:与IN ROLE相同,是已过时的语法。

·ROLE role_name [,...]:role_name将成为这个新建的角色的成员。

·ADMIN role_name [,...]:role_name将有这个新建角色的WITHADMIN OPTION权限。

·USER role_name [,...]:与ROLE子句相同,但已过时。

·SYSID uid:此子句主要是为了SQL向下兼容,实际没有什么用途。

权限概念:

任何数据库的逻辑结构对象(包括库)都属于某个用户。

创建用户时指定的权限(后续可alter role修改):

·超级用户的权限。

·创建数据库的权限。

·是否允许LOGIN的权限。

另一类(grantrevote来管理的权限)

·在数据库中创建模式(SCHEMA)。

·允许在指定的数据库中创建临时表的权限。

·连接某个数据库的权限。

·在模式中创建数据库对象的权限,如创建表、视图、函数等。

·在一些表中做SELECT、UPDATE、INSERT、DELETE等操作的 权限。

·在一张具体的表的列上进行SELECT、UPDATE、INSERT操作的 权限。

·对序列进行查询(执行序列的currval函数)、使用(执行序列的 currval函数和nextval函数)、更新的权限。

·在声明表上创建触发器的权限。

·把表、索引等建到指定表空间的权限。

权限管理层次:

1.特殊权限(登录、超级用户、建库权限、建用户权限 等等)

2.库中创建schema的权限

3.schema中创建  对象的权限(表、索引等)

4.表的增删改查权限

5.操作表的某些字段的权限

一些例子:

将查询myhaha表的权限赋予给所有用户(public

GRANT select on TABLE myhaha to public;

想要给readonly用户只读权限

1.收回任何用户可在public schema中建表权限(先收回,后面再单独赋予给其他用户)

REVOKE CREATE ON SCHEMA public from public;

2.将现存的所有表的只读权限给到readonly用户

GRANT SELECT ON ALL TABLES IN SCHEMA public TO readonly;

3.将后面建的所有表的只读权限给到readonly用户

ALTER DEFAULT PRIVILEGES IN SCHEMA public grant select on tables to readonly;

格式:

GRANT some_privileges ON database_object_type object_name TO role_name;

REVOKE some_privileges ON database_object_type object_name FROM role_name;

some_privileges

ddl么有专门的权限,一般就是create权限。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

汪灵骅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值