postgresql创建用户及分配权限

1、创建用户

CREATE ROLE readonlyuser WITH
  LOGIN
  NOSUPERUSER
  NOINHERIT
  NOCREATEDB
  NOCREATEROLE
  NOREPLICATION
  ENCRYPTED PASSWORD 'md5e032d3f6aa6d6f9b78febe19c3e7861e';

COMMENT ON ROLE readonlyuser IS '只读用户';

2、分配public模式下的所有已有表给用户readonlyuser

GRANT select ON all tables in schema public TO readonlyuser;

如果要分配单独一张表,可用:

GRANT SELECT ON TABLE mytable TO readonlyuser;

3、分配public模式下未来新建的表给用户readonlyuser

GRANT USAGE ON SCHEMA public TO readonlyuser;

ALTER DEFAULT PRIVILEGES for role postgres IN SCHEMA public
GRANT select ON TABLES TO readonlyuser;

4、删除用户

(1)首先回收权限(相应权限都要回收,这里列了一些)
revoke all on database "sptialData" from readonlyuser;
revoke all on all tables in schema public from readonlyuser;

revoke all ON SCHEMA public from readonlyuser;

回收默认权限:

alter DEFAULT PRIVILEGES for role postgres IN SCHEMA public
revoke all on tables from readonlyuser;

(2)删除用户

drop role readonlyuser;

5、查询角色

select * from pg_roles;
select * from information_schema.table_privileges where grantee like 'read%';

select * from pg_default_acl;

为了方便直观查看,用如下关联查询:

SELECT pg_catalog.pg_get_userbyid(d.defaclrole) AS "Granter",
  n.nspname AS "Schema",
  CASE d.defaclobjtype WHEN 'r' THEN 'table' WHEN 'S' THEN 'sequence' WHEN 'f' THEN 'function' WHEN 'T' THEN 'type' END AS "Type",
  pg_catalog.array_to_string(d.defaclacl, E', ') AS "Access privileges"
FROM pg_catalog.pg_default_acl d
LEFT JOIN pg_catalog.pg_namespace n ON n.oid = d.defaclnamespace
ORDER BY 1, 2, 3;

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值