PostgreSQL用户、权限管理

一、PostgreSQL用户、权限管理

  postgres安装完成后,会自动在操作系统和postgres数据库中分别创建一个名为postgres的用户以及一个同样名为postgres的数据库

  一)组角色

一个组角色可以看作一组数据库用户。组角色可以拥有数据库对象(比如表),并可以把这些对象上的权限赋予其他角色,以控制谁拥有访问哪些对象的权限。
--创建角色:
 create role role_emp;
--查看系统中的角色,如:
 select rolname from pg_roles;
--修改组角色名称的语法:
alter role  组角色名称  rename  to  新的组角色名称;
--删除组角色
drop role  组角色的名称;

 

  二)角色的各种权限

1:登录权限:login
 --创建具有登录权限的组角色,如:
create role XXX with password 'XXXXX' login;

create user XXX with password 'XXXXXX';
2:superuser(超级用户)  superuser超级用户拥有对数据库操作的最高权限,可以完成对数据库的所有权限检查。  --创建数据库超级用户,如:  create role  username superuser;  注意:只有超级用户才能有权限创建超级用户。 3:createdb创建数据库  --创建具有创建数据库权限的组角色,如  create role  username createdb;   4:createrole创建角色  --创建具有创建角色权限的角色,如:  create role username createrole; 5:口令 在客户认证方法要求与数据库建立连接时,需要口令权限。常见的认证方法包括:password,md5,crypt。 --创建具有口令权限的角色,如: create role username password '123456';

 

  三)账户管理

方式1:在系统命令行中使用createuser命令中创建
createuser username ;如
[pguser@localhost ~]$ createuser username

方式2:在PostgresSQL命令行中使用CREATE ROLE指令创建
CREATE ROLE rolename;

方式3:在PostgresSQL命令行中使用CREATE USER指令创建
CREATE USER username;

注意:CREATE USER和CREATE ROLE的区别在于,CREATE USER指令创建的用户默认是有登录权限的,而CREATE ROLE没有。

例子:创建用户username 密码123456,并且有创建数据库权限和创建角色权限,如:
create user username password '123456' createdb createrole;

--删除用户
drop user username;

--修改用户密码
alter user username  password '123456';

 

  四)组角色和用户权限管理

--对组角色授权:
alter role  角色名  权限1,权限2,,,;
如:给ro_emp角色添加创建数据表和创建角色的权限:
alter role  ro_emp  createdb createrole;

--对用户授权
alter  user  用户名  权限1,权限2,,,;
如:给用户添加创建数据表和创建角色权限,
alter user username  createdb createrole;

--收回组角色权限
将role_emp角色的创建数据表和创建角色权限收回,如:
alter role role_emp  nocreatedb  nocreaterole;

--收回用户权限
alter  user  username  nocreatedb nocreaterole;

 

  五)数据库权限管理

--修改数据库的拥有者
alter  database  数据库名称  owner  to  拥有者名字;
如:
alter database testdb owner to username;

--增加用户的数据表权限
grant 权限  on 数据表  to 用户名;
如:
grant update  on  emp  to username;

 

posted @ 2022-10-10 21:41  思维无界限  阅读(5609)  评论(0编辑  收藏  举报