• ADADADADAD

    PostgreSQL对现有,新建的表和视图授权给用户[ mysql数据库 ]

    mysql数据库 时间:2024-12-25 09:58:30

    作者:文/会员上传

    简介:

    由于开发提出需求:(1)在多个PostgreSQL的instacne上面创建一个readonly用户,仅对数据库里面的表或者视图(包括物化视图)有仅有select权限,并且对以后新建的表和视图也要有selec

    以下为本文的正文内容,内容仅供参考!本站为公益性网站,复制本文以及下载DOC文档全部免费。

    由于开发提出需求:

    (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)具体如何实现可以参考测试过程:

    https://blog.51cto.com/darrenmemos/2086198

    脚本如下:

    #!/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.logwhilereaddb_namedo/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.logwhilereadschema_namedo/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.logdone</tmp/db_list.logexit0

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

    参考链接:

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

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

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

    将本文的Word文档下载到电脑

    推荐度:

    下载
    热门标签: postgresqlgr