• postgresql-revoke 回收权限及删除角色


    回收权限及删除角色

    revoke回收权限

    REVOKE [ GRANT OPTION FOR ]
        { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER }
        [, ...] | ALL [ PRIVILEGES ] }
        ON { [ TABLE ] table_name [, ...]
             | ALL TABLES IN SCHEMA schema_name [, ...] }
        FROM { [ GROUP ] role_name | PUBLIC } [, ...]
        [ CASCADE | RESTRICT ]
    
    • 删除用户
    --创建表并赋权限
    postgres=#  create schema schema1;
    CREATE SCHEMA
    postgres=#  set search_path=schema1;
    SET
    postgres=# create table schema1.test(id int);
    CREATE TABLE
    postgres=# insert into schema1.test select generate_series(1,10);
    INSERT 0 10
    postgres=#  create role role_a  with password '123456' login;
    CREATE ROLE
    postgres=# grant all on database postgres to role_a;
    GRANT
    postgres=#  grant select on all tables in schema schema1 to role_a;
    GRANT
    postgres=#  grant all on schema schema1 to role_a;
    GRANT
    
    --将前面对象赋权时创建的role_a删除
    postgres=# drop role role_a;
    ERROR:  role "role_a" cannot be dropped because some objects depend on it
    DETAIL:  privileges for schema schema1
    privileges for table test
    privileges for database postgres
    
    --删除role失败
    postgres=# drop role role_a;
    ERROR:  role "role_a" cannot be dropped because some objects depend on it
    DETAIL:  privileges for schema schema1
    privileges for table test
    privileges for database postgres
    
    --要想删除用户必须回收所有权限
    postgres=# revoke all on schema schema1 from role_a;
    REVOKE
    postgres=# drop role role_a;
    ERROR:  role "role_a" cannot be dropped because some objects depend on it
    DETAIL:  privileges for table test
    privileges for database postgres
    
    postgres=# revoke all on all tables in schema schema1 from role_a;
    REVOKE
    postgres=# drop role role_a;
    ERROR:  role "role_a" cannot be dropped because some objects depend on it
    DETAIL:  privileges for database postgres
    postgres=# 
    
    postgres=# revoke all on database postgres  from role_a;
    REVOKE
    postgres=# drop role role_a;
    DROP ROLE
    

    删除用户前,需要回收权限

    • 回收template0的连接权限:
    postgres=# revoke connect on database template1 from role_a;
    REVOKE
    postgres=# c template1 role_a
    psql (9.6.4, server 9.5.3)
    You are now connected to database "template1" as user "role_a".
    

    回收template1的连接权限并不生效,控制template1的连接,可以在pg_hba.conf配置,参考前面pg_hba.conf的配置

    要删除一个组角色,执行DROP ROLE group_role命令即可。然而在删除该组角色之后,它与其成员角色之间的关系将被立即撤销(成员角色本身不会受影响)。不过需要注意的是,在删除之前,任何属于该组角色的对象都必须先被删除或者将对象的所有者赋予其它角色,与此同时,任何赋予该组角色的权限也都必须被撤消。

  • 相关阅读:
    uniapp上传图片
    vue 路由router传参,刷新丢失问题
    前端网站收藏
    uni.startPullDownRefresh 只能执行一次的解决方案
    移动端,h5页面1px 1像素边框过粗解决方案
    让WebApi支持Namespace
    Ubuntu 14.04下安装GitLab
    Ubuntu学习笔记
    淘宝订单数据转CSV
    修改SQL Server 数据库的编码
  • 原文地址:https://www.cnblogs.com/zhangfx01/p/14367594.html
Copyright © 2020-2023  润新知