在数据库中创建对象时,都会为其分配所有者。 所有者通常是执行创建语句的用户。 对于大多数类型的对象,初始状态是只有所有者(或超级用户)可以修改或删除对象。 要允许其他角色或用户使用它,必须授予权限或权限。
postgresql中的不同类型的权限是:
select
,insert
,update
,delete
,truncate
,references
,trigger
,create
,connect
,temporary
,execute
和 usage
。根据对象的类型(表,函数等),权限将应用于对象。 要为用户分配权限,使用grant
命令。
grant
命令的基本语法如下:
grant privilege [, ...]
on object [, ...]
to { public | group group | username }
privilege
值可以是:select
,insert
,update
,delete
,rule
,all
。object
:要向其授予访问权限的对象的名称。 可能的对象是:表,视图,序列public
:表示所有用户的简短形式。group group
:授予权限的组。username
:授予权限的用户的名称。 public
是表示所有用户的简短形式。revoke
命令的基本语法如下:
revoke privilege [, ...]
on object [, ...]
from { public | group groupname | username }
privilege
值可以是:select
,insert
,update
,delete
,rule
,all
。object
: 授予访问权限的对象的名称。 可能的对象是:表,视图,序列。public
:表示所有用户的简短形式。group group
:授予权限的组。username
:授予权限的用户的名称。 public
是表示所有用户的简短形式。如要理解权限,我们先创建一个user
,如下所示:
h3_db=# create user manisha with password 'password';
create role
语句create role
表示创建了一个用户名为manisha
。
考虑 company
表有以下记录:
h3_db# select * from company;
id | name | age | address | salary
----+-------+-----+-----------+--------
1 | paul | 32 | california| 20000
2 | allen | 25 | texas | 15000
3 | teddy | 23 | norway | 20000
4 | mark | 25 | rich-mond | 65000
5 | david | 27 | texas | 85000
6 | kim | 22 | south-hall| 45000
7 | james | 24 | houston | 10000
(7 rows)
接下来,让我们给予用户“manisha
”在表company
上授予所有权限,如下所示:
h3_db=# grant all on company to manisha;
grant
语句grant
指示所有在company表上的权限都分配给用户“manisha
”。
接下来,让我们从用户“manisha
”中撤销权限,如下所示:
h3_db=# revoke all on company from manisha;
revoke
revoke
表示从用户“manisha
”撤消所有权限。甚至可以删除用户,如下所示:
h3_db=# drop user manisha;
drop role
drop role
表示从数据库中删除用户“manisha
”。