zoukankan      html  css  js  c++  java
  • 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命令即可。然而在删除该组角色之后,它与其成员角色之间的关系将被立即撤销(成员角色本身不会受影响)。不过需要注意的是,在删除之前,任何属于该组角色的对象都必须先被删除或者将对象的所有者赋予其它角色,与此同时,任何赋予该组角色的权限也都必须被撤消。

  • 相关阅读:
    Key-Value Memory Network
    Deep Mask Memory Network with Semantic Dependency and Context Moment for Aspect Level Sentiment Clas
    Deep Memory Network在Aspect Based Sentiment方向上的应用
    Deep Memory Network 深度记忆网络
    Self Attention 自注意力机制
    Attention基本公式及其变种
    *端策略优化算法(PPO)
    Policy Gradient 算法
    一本通 农场派对
    A
  • 原文地址:https://www.cnblogs.com/zhangfx01/p/14367594.html
Copyright © 2011-2022 走看看