PostgreSQL用户权限配置

使用超级用户pgadmin创建应用用户appuser  赋权createdb、login   密码为 1qaz@WSX  有效时间至2022年12月31日

[postgres@localhost ~]$ psql -U pgadmin -d postgres
psql (12.0)
Type "help" for help.

postgres=# create user appuser with createdb login password '1qaz@WSX' valid until '2022-12-31';
CREATE ROLE

创建属主为appuser的表空间并命名为exam,指向/exam

        创建表空间目录

[postgres@localhost ~]$ su - root
[root@localhost ~]# cd /
[root@localhost /]# mkdir /exam
[root@localhost /]# chown postgres.postgres /exam

        创建表空间和数据库

[root@localhost /]# su - postgres
[postgres@localhost ~]$ psql -d postgres -U pgadmin

postgres=# create tablespace exam owner appuser location '/exam';
postgres=# create database appdb with owner=appuser tablespace=exam;

回收 appdb 中在 public 上面的 create object权限

postgres=# \c appdb pgadmin
appdb=# revoke create on schema public from public;

        注意:from XXX 表示回收哪个个角色的权限

以appuser用户 在appdb数据库中 创建名为appuser的schema

appdb=# \c appdb appuser
appdb=> create schema appuser;

以appuser用户 在appdb数据库中创建表app表 schema为appuser

appdb=# \c appdb appuser
appdb=> create table appuser.app(id int);

回收其他非超级用户对于appdb的连接权限

appdb=> \c appdb pgadmin
appdb=# revoke connect on database appdb from public;

创建readonlyuser只读用户 并且该用户可以连接到appdb

appdb=# \c appdb pgadmin
appdb=# create user readonlyuser with password '1qaz@WSX';
appdb=# grant connect on database appdb to readonlyuser;

授权readonlyuser对appuser schema下所有的表有只读权限

appdb=> \c appdb pgadmin
appdb=# grant usage on schema appuser to readonlyuser;
appdb=# grant select on all tables in schema appuser to readonlyuser;

授权readonlyuser对appuser schema下新创建的表有只读权限(默认权限为只读)

appdb=> \c appdb appuser
appdb=> alter default privileges grant usage on schemas to readonlyuser;
appdb=> alter default privileges in schema appuser grant select on tables to readonlyuser;

        注意:这里要用appuser赋权 用pgadmin赋权新表不具有查询权限

 

 

你可能感兴趣的:(Postgre,postgresql)