使用超级用户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赋权新表不具有查询权限