在EnterpriseDb 中赋予一个用户(非对象创建者) 用于对某个对象的权限(select ,update,...)
1 创建用户xmstc_curd用户
create user xmstc_curd identify ....; 或者 create role xmstc_curd23 identify ...;
2 赋予模式的权限
grant usage on schema gk to xmstc_curd
3 赋予对象的权限 (如果是根据sequence 序列自增的表,还需赋予相应序列的select 权限)
grant能够授予使用者拥有select、instert、update、delete等权限,语法如下:
grant 权限种类 on 对象名称 to 对象;
授权种类可以为all、select、instert、update、delete、rule其中之一。若同時要授予多個權限種類可利用“,“來分隔。若為all代表授予所有權限。
grant select,update,delete,insert on ad,student,score to xmstc_curd
4 ok
GRANT 命令有两个基本变种:一个变种是给数据库对象(表、视图、序列、数据库、函数、过程语言、模式、表空间)赋予权限;一个变种是赋予一个角色中的成员关系。
USAGE
对于过程语言,允许使用指定过程语言创建该语言的函数。这是适用于过程语言的唯一权限。
对于模式,允许访问包含在指定模式中的对象(假设该对象的所有权要求同样也设置了)。
若要授予所有使用者可用public來表示。
grant select on emp to public;
上的方式授予使用者權限,但如果有多位使用者時設定就相當麻煩,那就可以透過group方式來執行。
首先,先建立群組。再將使用者加入到該群組。語法如下:
create group group1;
alter group group1 add user user1;
再與設定使用者權限相同方式來授予gruop權限。語法如下:
grant select on emp to group1;
* revoke
revoke與grant相反,用來撤回使用者權限。語法如下:
revoke 權限種類 on 資料表名稱 from 對象:
至於設定方式,權限種類、 資料表名稱、 對象設定方法與grant相同。
*查看存取權限
當我們建立完資料表時我們可利用psql的\z指令來查看這個資料表存取權限。
edb=# \z
Access privileges for database "edb"
Schema | Name | Type | Access privileges
----------------+---------------------------+----------+-----------------------------------------------------
dbo | sysindexes | view | {enterprisedb=arwdxt/enterprisedb,=r/enterprisedb}
dbo | sysobjects | view | {enterprisedb=arwdxt/enterprisedb,=r/enterprisedb}
dbo | systables | view | {enterprisedb=arwdxt/enterprisedb,=r/enterprisedb}
dbo | systypes | view | {enterprisedb=arwdxt/enterprisedb,=r/enterprisedb}
位於“=“左側為使用者,如果是public則不會顯示;位於“=“右側為權限清單。
r select
a insert
w update/delete
R rule
參看 http://59.120.192.175/?q=node/29