角色(Role)
PostgreSQL使用角色的概念管理數(shù)據(jù)庫(kù)訪問(wèn)權(quán)限柿扣。 根據(jù)角色自身的設(shè)置不同,一個(gè)角色可以看做是一個(gè)數(shù)據(jù)庫(kù)用戶,或者一組數(shù)據(jù)庫(kù)用戶嗓化。 角色可以擁有數(shù)據(jù)庫(kù)對(duì)象(比如表)以及可以把這些對(duì)象上的權(quán)限賦予其它角色帽馋, 以控制誰(shuí)擁有訪問(wèn)哪些對(duì)象的權(quán)限搅方。
操作角色的語(yǔ)句:
create role db_role1; --創(chuàng)建角色
drop role db_role1; --刪除角色
select rolename from pg_roles; --查看所有角色
/du --在命令格式下查看所有角色的命令
角色的權(quán)限
一個(gè)數(shù)據(jù)庫(kù)角色可以有很多權(quán)限,這些權(quán)限定義了角色和擁有角色的用戶可以做的事情绽族。
create role db_role1 LOGIN; --創(chuàng)建具有登錄權(quán)限的角色db_role1
create role db_role2 SUPERUSER; --創(chuàng)建具有超級(jí)用戶權(quán)限的角色
create role db_role3 CREATEDB; --創(chuàng)建具有創(chuàng)建數(shù)據(jù)庫(kù)權(quán)限的角色
create role db_role4 CREATEROLE --創(chuàng)建具有創(chuàng)建角色權(quán)限的角色
alter role db_role1 nologin nocreatedb; --修改角色取消登錄和創(chuàng)建數(shù)據(jù)庫(kù)權(quán)限
用戶(User)
其實(shí)用戶和角色都是角色姨涡,只是用戶是具有登錄權(quán)限的角色。
create user db_user1 password '123'; --創(chuàng)建用戶
create role db_user1 password '123' LOGIN; --同上一句等價(jià)
drop user db_user1; --刪除用戶
alter user db_user1 password '123456'; --修改密碼
alter user db_user1 createdb createrole; --對(duì)用戶授權(quán)
賦予角色控制權(quán)限
我們可以使用GRANT 和REVOKE命令賦予用戶角色吧慢,來(lái)控制權(quán)限涛漂。
create user db_user1; --創(chuàng)建用戶1
create user db_user2; --創(chuàng)建用戶2
create role db_role1 createdb createrole; --創(chuàng)建角色1
grant db_role1 to db_user1,db_user2; --給用戶1,2賦予角色1,兩個(gè)用戶就擁有了創(chuàng)建數(shù)據(jù)庫(kù)和創(chuàng)建角色的權(quán)限
revoke db_role1 from db_user1; --從用戶1移除角色1,用戶不在擁有角色1的權(quán)限