加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

PostgreSQL对现有,新建的表和视图授权给用户

发布时间:2020-12-13 16:40:56 所属栏目:百科 来源:网络整理
导读:由于开发提出需求: (1)在多个PostgreSQL的instacne上面创建一个readonly用户,仅对数据库里面的表或者视图(包括物化视图)有仅有select权限,并且对以后新建的表和视图也要有select权限,我们知道PostgreSQL 在schema下新建的表,对于一个已经存在的用户不会

由于开发提出需求:

(1)在多个PostgreSQL的instacne上面创建一个readonly用户,仅对数据库里面的表或者视图(包括物化视图)有仅有select权限,并且对以后新建的表和视图也要有select权限,我们知道PostgreSQL

在schema下新建的表,对于一个已经存在的用户不会自动赋予select的权限的,需要我们使用grant select...手动去执行,这样就比较麻烦,总不能每次新建表,我们就赋权一次,要知道我们有很多实例,总不能把时间都放在这样没有 意义的事情上,再说了我们也不能时刻监督有哪些PostgreSQL有新建的表,所以我们需要对未来的表提前授权,查看了一下PostgreSQL网站,发现命令alter default privileges...可以实现这个功能.


(2)alter default privileges没有对已经存在的表和视图授权的功能,所以想要对现在和未来的对象都赋权,还需要使用grant select对现有的表赋权.

(3)由于需要执行的db/schenma非常多,一条一条命令执行的话不太现实,需要编写脚本,批量执行.

(4)具体如何实现可以参考测试过程:

http://www.52php.cn/article/p-tkxyoivh-bsd.html

脚本如下:

#!/bin/ksh-x
############################################################################
#Name:postgreSQL_grant_readonly_privileges.sh
#Location:
#Function:PostgreSQLgrantreadonlyprivileges
#Author:
#CreateDate:
#updateDate:
#############################################################################

/usr/local/pgsql/bin/psql-dpostgres-q-t-c"selectdatnamefrompg_catalog.pg_databasewheredatnamenotin('postgres','template1','template0');"|grep-v"^$">/tmpb_list.log

whilereaddb_name
do
/usr/local/pgsql/bin/psql-d${db_name}-q-t-c"selectschema_namefrominformation_schema.schematawhereschema_namenotinpg_catalog','information_schema','pg_toast','pg_temp_1','pg_toast_temp_1');"|grep-v"^$">/tmp/schema_list.log

whilereadschema_name
do
/usr/local/pgsql/bin/psql-d${db_name}-q-t-c"grantselectonalltablesinschema${schema_name}toreadonly;"
/usr/local/pgsql/bin/psql-d${db_name}-q-t-c"grantusageonschema${schema_name}toreadonly;"
/usr/local/pgsql/bin/psql-d${db_name}-q-t-c"alterdefaultprivilegesinschema${schema_name}grantselectontablestoreadonly;"
done</tmp/schema_list.log

done</tmp/db_list.log

exit0


然后就可以在服务器上批量执行了。

参考链接:

https://www.postgresql.org/docs/9.3/static/sql-grant.html

https://www.postgresql.org/docs/9.4/static/sql-alterdefaultprivileges.html

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读