美文网首页
PostgreSQL权限管理与对象层次

PostgreSQL权限管理与对象层次

作者: ZYJ2016 | 来源:发表于2017-01-05 16:43 被阅读0次

    角色

    PostgreSQL以角色的方式来实现对权限的管理。在PostgreSQL中,不再有成员的概念,只有角色。为了便于理解,我们可以把与之对应的角色称为组角色成员角色

    CREATE ROLE group1;
    /*创建组角色group1,没有赋予login权限,所以这个角色是不可登陆的*/
    
    CREATE ROLE member1 LOGIN PASSWORD 12345678 INHERIT;
    /*创建成员角色member1*/
    /*login:赋予了该角色可登录权限*/
    /*PASSWORD:设置登录密码,可以不设置*/
    /*INHERIT:可继承其他角色权限,不可继承为NOINHERIT,默认可继承*/
    
    GRANT updata ON  accounts TO GROUP group1;
    /*把对对象accounts的updata操作权限赋予组角色group1*/
    REVOKE updata ON accouts FROM GROUP group1;
    /*撤销*/
    
    GRANT group1 TO member1;
    /*赋予成员角色member1组角色grou[p1的权限*/
    REVOKE group1 FROM member1;
    /*撤销*/
    

    在权限管理中,通常把多个用户角色赋予一个组角色,权限的赋予和撤销都从组角色进行。

    对象

    PostgreSQL中,对象层次分为:服务器-数据库-模式-表或其他类型对象。

    对象被创建它的角色所有,其他角色默认没有对它的权限。

    模式schema可以通过搜索路径search_path设置,默认值为"$user",public,即如果创建了同名模式会默认为同名模式,否则默认为public

    不同模式下可创建同名表,比如public模式下创建了表t1,在zyj模式下还可以创建名为t1的表,不同模式下的对象不可见,访问时如果不做指定会默认访问当前模式下的表。

    PostgreSQL权限管理.png

    postgres中:

    • 同时只能访问一个数据库,权限控制以数据库密码方式实现,与角色无关;
    • 同时可以访问多个模式,权限控制以角色方式实现,默认创建者拥有权限,其他角色需要授权;
    • 角色对于有权限的模式中没有权限的对象(角色zyj2对于public模式下的表t1),可见,但不可访问;
    • 角色对于没有权限的模式中的对象(角色zyj2对于zyj模式下的表t1),既不可见,也不可访问;

    相关文章

      网友评论

          本文标题:PostgreSQL权限管理与对象层次

          本文链接:https://www.haomeiwen.com/subject/atxzvttx.html