精华内容
下载资源
问答
  • postgres权限修改

    2021-01-28 14:32:48
    查询表publi中所有不是[用户名]创建的的表,将查询出来的拼接sql直接执行。 select 'ALTER TABLE ' || tablename || ' OWNER TO [用户名]' from pg_tables where schemaname = 'public' and tableowner <>...

    查询表publi中所有不是[用户名]创建的的表,将查询出来的拼接sql直接执行。

    select 'ALTER TABLE ' || tablename || ' OWNER TO [用户名]' from pg_tables  where schemaname = 'public' and tableowner <> '[用户名]'
    
    展开全文
  • postgres权限赋权以及search_path设置

    千次阅读 2020-08-25 16:55:30
    #pg权限列表 GRANT { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER } [, ...] | ALL [ PRIVILEGES ] } ON { [ TABLE ] table_name [, ...] | ALL TABLES IN SCHEMA schema_name [, .....
    #pg权限列表
    GRANT { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER }
        [, ...] | ALL [ PRIVILEGES ] }
        ON { [ TABLE ] table_name [, ...]
             | ALL TABLES IN SCHEMA schema_name [, ...] }
        TO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ]
    
    GRANT { { SELECT | INSERT | UPDATE | REFERENCES } ( column_name [, ...] )
        [, ...] | ALL [ PRIVILEGES ] ( column_name [, ...] ) }
        ON [ TABLE ] table_name [, ...]
        TO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ]
    
    GRANT { { USAGE | SELECT | UPDATE }
        [, ...] | ALL [ PRIVILEGES ] }
        ON { SEQUENCE sequence_name [, ...]
             | ALL SEQUENCES IN SCHEMA schema_name [, ...] }
        TO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ]
    
    GRANT { { CREATE | CONNECT | TEMPORARY | TEMP } [, ...] | ALL [ PRIVILEGES ] }
        ON DATABASE database_name [, ...]
        TO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ]
    
    GRANT { USAGE | ALL [ PRIVILEGES ] }
        ON DOMAIN domain_name [, ...]
        TO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ]
    
    
    

    验证两个问题:

    1 使用gpadmin创建的schema,其他用户怎么访问,怎么赋权

    2 使用dbuser创建schema,自己怎么查询,是否需要赋权

    准备工作:

    #pg有两个用户gpadmin,dbuser
    
    #1 创建数据库
    postgres=# create database spdb;
    CREATE DATABASE
    
    #2 创建dbuser用户
    
    spdb=# CREATE  USER  dbuser  LOGIN  PASSWORD 'dbuser';
    
    # 赋予dbuser操作数据库的权限
    spdb=# grant all on database spdb to dbuser;
    GRANT

    验证问题1:

    spdb=# \c
    You are now connected to database "spdb" as user "gpadmin".
    #1 使用gpadmin创建shema以及表
    spdb=# create schema shm1;
    CREATE SCHEMA
    spdb=# create table shm1.t(id int);
    
    #2 使用gpadmin去查询:可以使用gpadmin
    spdb=# select * from shm1.t;
     id 
    ----
    (0 rows)
    
    #3 使用dbuser去查询:没有权限查询
    spdb=# \c - dbuser
    You are now connected to database "spdb" as user "dbuser".
    spdb=> select * from shm1.t;
    ERROR:  permission denied for schema shm1
    
    #4 切换回gpadmin授权,必须两次赋权
    spdb=> \c - gpadmin
    You are now connected to database "spdb" as user "gpadmin".
    spdb=# grant all on schema shm1 to dbuser;
    GRANT
    spdb=# grant all on all tables in  schema shm1 to dbuser;
    GRANT
    
    #5 可以查询
    spdb=# \c - dbuser
    You are now connected to database "spdb" as user "dbuser".
    spdb=> select * from shm1.t;
     id 
    ----
    (0 rows)
    
    结论:A用户创建的schema,B用户要访问其下面的表,需要A用户先授权schema给B,再授权schema下的表给B

    验证问题2:

    spdb=> \c
    You are now connected to database "spdb" as user "dbuser".
    #1 创建schema
    spdb=> create schema shm2;
    CREATE SCHEMA
    #1 dbuser创建表
    spdb=> create table shm2.t(id int);
    #2 访问表:可以访问
    spdb=> select * from shm2.t;
     id 
    ----
    (0 rows)
    
    结论:A用户创建的schema,自己可以访问(如果不想使用shm2这种前缀访问,需要设置search_path)

    设置search_path:

    spdb=> alter  role dbuser  set  search_path to "$user",shm2,public;
    ALTER ROLE
    #重新登陆,才能刷新权限
    [gpadmin@mdw ~]$ psql -d spdb -U dbuser
    spdb=> select * from t;
     id 
    ----
    (0 rows)
    
    注:search_path会根据设置的路径往下寻找表所在的schema(第一个schema优先),如果不同schema的存在表名相同,会取第一个schema的表,这点需要注意。

     

    展开全文
  • postgres权限管理(一)

    2021-03-08 16:43:16
    推荐权限管理方式:用户组 1、创建不同权限的用户组 create role PROJ1_DEV_GROUP; //表的Owner,拥有表的所有操作权限。 create role PROJ1_WRITE_GROUP; //表的写入权限,可以写入数据至相应表。 create role ...

    推荐权限管理方式:用户组

    1、创建不同权限的用户组

    create role PROJ1_DEV_GROUP; //表的Owner,拥有表的所有操作权限。
    create role PROJ1_WRITE_GROUP; //表的写入权限,可以写入数据至相应表。
    create role PROJ1_VIEW_GROUP; //查看表数据权限,可以查看相应表的数据。
    

    2、对各个用户组进行授权

    授权PROJ1拥有SCHEMA1中的相关权限。
    grant create,usage on schema public to PROJ1_DEV_GROUP;
    grant usage on schema public to PROJ1_WRITE_GROUP;
    grant select on schema public to PROJ1_VIEW_GROUP;
    

    3、各个用户组设定对未来新建表的权限

    ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO PROJ1_VIEW_GROUP; //设置只读
    
    ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT usage ON TABLES TO PROJ1_WRITE_GROUP; // 设置写权限
    
    ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT create, usage ON TABLES TO PROJ1_DEV_GROUP; //建表权限
    

    4、创建新用户并设置只读权限

    CREATE USER dev_test WITH PASSWORD 'test@123456'; //创建新用户
    
    GRANT PROJ1_VIEW_GROUP to dev_test; //给该用户设置所有表只读权限 
    

    注意:后续权限的增加和收回都只需操作对应的用户组即可,比较方便

    不推荐的管理方式:pgsql对单个用户进行权限管理

    1、对单个用户授权

    GRANT SELECT ON ALL TABLES IN SCHEMA PUBLIC to users;
    

    所有用户对建表事件进行监听,有新建表则自动加上select权限

    ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO PUBLIC; //默认所有人对在public Schema中新创建的表具有读权限。
    
    ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO PROJ1_VIEW_GROUP; //也可对单个用户组进行监听,用户组下的所有用户即可获得新建表的权限
    

    注意:该命令只对已有用户起作用,新建用户需重新执行该sql或只对单个用户进行设置(将PUBLIC换成对应的用户名)

    展开全文
  • postgres的赋权是层层赋权: (1) 先把schema的权限授予用户 (2)把schema.table的权限授予用户 注意:如果直接跳过第一步,第二步grant select onschema.table to user,这种赋值会成功,但是查询还是没有权限。 ...

    postgres的赋权是层层赋权:

    (1) 先把schema的权限授予用户

    (2)把schema.table的权限授予用户

    注意:如果直接跳过第一步,第二步grant select on schema.table to user,这种赋值会成功,但是查询还是没有权限。

    如果要跳过第一步,可以再创建schema的时候指定AUTHORIZATION user,即:create schema XXX  AUTHORIZATION  user;然后再进行grant.

     

    举例:

     例子中我使用了role对权限进行管理,先将操作的权限赋role,然后将role赋给dbuser(和直接赋权给dbuser一样).

    (1)层层赋权测试

    postgres=# \c
    You are now connected to database "postgres" as user "gpadmin".
    
    postgres=# create schema shm4;
    CREATE SCHEMA
    
    postgres=# create table shm4.t(id int,m varchar(10));
    CREATE TABLE
    
    #使用dbuser用户进行查询shm4.t
    postgres=> \c
    You are now connected to database "postgres" as user "dbuser".
    
    
    #没有权限查询
    postgres=> select * from shm4.t;
    ERROR:  permission denied for schema shm4
    LINE 1: select * from shm4.t;
    #先赋权 ,role1为角色,赋予了用户dbuser(前面已经建好,这里可以忽略)
    postgres=# grant usage on schema shm4 to role1;
    GRANT
    
    postgres=# grant select on  shm4.t to role1;
    GRANT
    
    
    postgres=> \c
    You are now connected to database "postgres" as user "amr_out".
    #已经有权限查询
    
    postgres=> select * from shm4.t;
     id | m 
    ----+---
    (0 rows)

    (2)AUTHORIZATION测试

    postgres=# \c
    You are now connected to database "postgres" as user "gpadmin".
    
    #执行默认的AUTHORIZATION
    postgres=# create schema shm5 AUTHORIZATION role1;
    CREATE SCHEMA
    
    postgres=# create table shm5.t(id int,m varchar(10));
    
    #如果直接查询shm5.t,查询失败
    postgres=> \c
    You are now connected to database "postgres" as user "amr_out"
    postgres=> select * from  shm5.t;
    ERROR:  permission denied for relation t
    
    #再gpadmin用户下对权限进行grant
    postgres=# \c
    You are now connected to database "postgres" as user "gpadmin".
    postgres=# grant select on  shm5.t to role1;
    GRANT
    
    
    #已经有权限查询
    postgres=> \c
    You are now connected to database "postgres" as user "amr_out".
    postgres=> select * from  shm5.t;
     id | m 
    ----+---
    (0 rows)

     

    展开全文
  • 简单说在PostgreSQL中权限控制的目标是Role,这个Role相当于MySQL中的用户。 可以为Role设置多种属性,控制Role能够执行的操作,这些属性可以在创建的时候指定,PostgreSQL SQL Commands: CREATE ROLE: CREATE ROLE ...
  • # IPv4 local connections:host all all 127.0.0.1/32 md5host all all 0.0.0.0/0 md5增加0.0.0.0/0 放开任意机器的访问权限...
  • postgres 权限相关操作

    2017-11-20 00:12:42
    postgres 权限相关操作
  • 最近需要做一个pg库的权限管理分配. 也就是创建一个用户,只允许制定IP访问,同时只有增删改查权限.1.设置监听 vi postgresql.conf, 开启监听,设置端口listen_addresses = '*' port = 54322 .设置IP访问列表 vi pg_...
  • postgres用户权限管理

    2021-03-19 22:40:29
    文章目录一、用户权限管理1.1 创建用户并授权1.2 postgres用户登录验证 一、用户权限管理 1.1 创建用户并授权 postgre中主要有create role和create user两个语法来创建角色或者用户,两者从功能上来讲基本一致,...
  • postgres中schema访问权限设置

    千次阅读 2020-05-29 10:22:04
    postgres=# create role aa login password 'aa'; CREATE ROLE postgres=# postgres=# postgres=# grant USAGE on SCHEMA my_schema to aa; GRANT postgres=# postgres=# postgres=# \c - a FATAL: role "a" does ...
  • 前言针对任何一个数据库,备份都是必要的,那么在centos进行备份的时候遇到了权限问题,centos的权限用户组请看前两篇文章,接下来要说的是如何使pg_dump有创建文件的权限。过程这个是本机,不是线上的,应该不怕,...
  • postgres数据库查看用户权限

    千次阅读 2014-07-15 00:40:27
    1、查看某用户的表权限select*frominformation_schema.table_privilegeswheregrantee='user_name';2、查看usage权限表select*frominformation_schema.usage_privilegeswheregrantee='user_name';3、查看存储过程函数...
  • PostgreSQL权限控制

    千次阅读 2019-05-18 19:58:07
    postgres=# \du 角色列表 角色名称 | 属性 | 成员属于 ----------+--------------------------------------------+---------- postgres | 超级用户, 建立角色, 建立...
  • 1、首先需要登录postgresSQL,这里是登录本地的用户为postgres的数据库: -h:登录的ip -u:登录的用户 ...2、创建新的用户,但是这个用户是没有权限 CREATE user user_name WITH PASSWORD '1...
  • docker中postgres的使用

    2020-01-25 21:54:44
    docker中的postgre镜像运行后默认有一个postgres用户 sudo - postgres 切换到postgres用户 在shell中运行 psql命令进入数据库终端 创建用户: ...//后面的superuse,createdatabase是赋予用户权限 ...
  • PostgreSQL权限

    千次阅读 2019-03-28 15:34:04
    PostgreSQL中的权限有如下 SELECT,INSERT,UPDATE,DELETE,TRUNCATE,REFERENCES,TRIGGER,CREATE,CONNECT,TEMPORARY,EXECUTE 和 USAGE 授权使用grant语法,回收权限使用revoke语法,跟mysql,oracle相似 grant ...
  • PostgreSQL 权限解读

    2020-05-28 19:20:21
    用户默认情况下具有public权限,public默认具有创建和使用schema的权限,因此意味着可以在schema中创建对象(包括表)、列出schema中的对象,并在其权限允许时访问它们。 所以创建数据库或schema完成后做的第一件事...
  • Linux下root用户无法启动pgsql,授权777 权限过大也无法启动  1)创建postgres用户  groupadd postgres //用户  useradd postgres -g postgres  passwd postgres ...
  • postgresql用户模式权限介绍

    万次阅读 2018-06-12 23:37:26
    查看用户pg中的role,user,group基本是一样的,只是默认创建的role,group没有登录数据库的权限.用户分为普通用户和超级用户1.使用\du查看数据库中的用户,其中role name是用户名,第二列是用户的属性,第三列表示用户具有...
  • 一、 创建一个不带有权限的基本用户 pg_client 点击(此处)折叠或打开 [postgres@v_22 bin]$ ./createuser --interactive pg_client; Shall the new role be a superuser? (y/n) n Shall the new role be allowed...
  • 1、关闭数据库服务 运行services.msc,打开“服务”管理器,找到postgresql-x64-...然后执行命令:alter user postgres login ,更改登录权限; 3、然后启动数据库服务,用postgres登录即可 回到“服务”管理器,启动p
  • PostgreSQL最大权限的用户就是超级用户,这个超级用户可以在数据库中做任意的操作,无任何的限制。当初使化数据库后,自动有会有一个超级用户,通常这个超级用户的名称与初使化数据库时的操作系统用户名相同。建...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 14,837
精华内容 5,934
关键字:

postgres权限