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