• postgresql 列级安全,列权限


    列级安全

    在某些情况下,并非所有的人都能看到表中所有的数据。postgres中可以指定某些用户只能看到某些列

    1.--表,插入一条数据
    postgres=# create table t_user(n_id int,c_name text);
    CREATE TABLE
    postgres=# insert into t_user values(1,'张三');
    INSERT 0 1
    
    2.--创建用户zhangsan
    postgres=# create role zhangsan login;
    CREATE ROLE
    
    3.--赋予账号连接和使用权限
    postgres=# grant connect on database postgres to zhangsan;
    GRANT
    postgres=# grant usage on schema public to zhangsan;
    GRANT
    
    4.赋予select权限给zhangsan,只能访问n_id
    postgres=# grant select (n_id) on t_user to zhangsan;
    GRANT
    
    5.--查询数据,可以读取到数据
    postgres=# c postgres zhangsan
    You are now connected to database "postgres" as user "zhangsan".
    postgres=> select n_id from t_user;
     n_id 
    ------
        1
    (1 row)
    
    --如果使用select *会报错,因为*标识所有的列,只能访问有权限访问的列
    postgres=> select * from t_user;
    错误:  permission denied for table t_user
    postgres=> select c_name from t_user;
    错误:  permission denied for table t_user
    
  • 相关阅读:
    noip欢乐赛10.24 分火腿
    noip2014 无线网络发射器选址/wireless.
    noip2012 借教室 线段树最小值做法
    Codevs1021题解---SPFA+路径记录
    Vijos1448题解---线段树+括号法
    Vijos1425题解---栈
    Codevs1022题解---匈牙利算法
    人们总要为曾经的年轻买单
    2017-10-26
    2017-10-24LCA
  • 原文地址:https://www.cnblogs.com/zhangfx01/p/14367563.html
Copyright © 2020-2023  润新知