在数据库中创建对象时,都会为其分配所有者。 所有者通常是执行创建语句的用户。 对于大多数类型的对象,初始状态是只有所有者(或超级用户)可以修改或删除对象。 要允许其他角色或用户使用它,必须授予权限或权限。
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”。