PostgreSQL是一個多用戶數據庫郭脂,可以為不同用戶指定允許的權限。
角色
PostgreSQL使用角色的概念管理數據庫訪問權限澈歉。 根據角色自身的設置不同展鸡,一個角色可以看做是一個數據庫用戶,或者一組數據庫用戶埃难。 角色可以擁有數據庫對象(比如表)以及可以把這些對象上的權限賦予其它角色莹弊, 以控制誰擁有訪問哪些對象的權限。
操作角色的語句:
create role db_role1; /--創(chuàng)建角色/
drop role db_role1; /--刪除角色/
select rolename from pg_roles; /--查看所有角色/
/du --在命令格式下查看所有角色的命令角色的權限
一個數據庫角色可以有很多權限涡尘,這些權限定義了角色和擁有角色的用戶可以做的事情忍弛。
create role db_role1 LOGIN; --創(chuàng)建具有登錄權限的角色db_role1
create role db_role2 SUPERUSER; --創(chuàng)建具有超級用戶權限的角色
create role db_role3 CREATEDB; --創(chuàng)建具有創(chuàng)建數據庫權限的角色
create role db_role4 CREATEROLE --創(chuàng)建具有創(chuàng)建角色權限的角色
alter role db_role1 nologin nocreatedb; --修改角色取消登錄和創(chuàng)建數據庫權限用戶
其實用戶和角色都是角色,只是用戶是具有登錄權限的角色考抄。
create user db_user1 password '123'; --創(chuàng)建用戶
create role db_user1 password '123' LOGIN; --同上一句等價
drop user db_user1; --刪除用戶
alter user db_user1 password '123456'; --修改密碼
alter user db_user1 createdb createrole; --對用戶授權賦予角色控制權限
我們可以使用GRANT 和REVOKE命令賦予用戶角色细疚,來控制權限。
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,兩個用戶就擁有了創(chuàng)建數據庫和創(chuàng)建角色的權限
revoke db_role1 from db_user1; --從用戶1移除角色1川梅,用戶不在擁有角色1的權限