PostgreSQL对现有,新建的表和视图授权给用户
发表于:2025-11-08 作者:千家信息网编辑
千家信息网最后更新 2025年11月08日,由于开发提出需求:(1)在多个PostgreSQL的instacne上面创建一个readonly用户,仅对数据库里面的表或者视图(包括物化视图)有仅有select权限,并且对以后新建的表和视图也要有s
千家信息网最后更新 2025年11月08日PostgreSQL对现有,新建的表和视图授权给用户
由于开发提出需求:
(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: PostgreSQL grant readonly privileges# Author:# Create Date:# update Date:#############################################################################/usr/local/pgsql/bin/psql -d postgres -q -t -c "select datname from pg_catalog.pg_database where datname not in('postgres','template1','template0');" | grep -v "^$" > /tmpb_list.logwhile read db_namedo /usr/local/pgsql/bin/psql -d ${db_name} -q -t -c "select schema_name from information_schema.schemata where schema_name not in pg_catalog','information_schema','pg_toast','pg_temp_1','pg_toast_temp_1');" | grep -v "^$" > /tmp/schema_list.log while read schema_name do /usr/local/pgsql/bin/psql -d ${db_name} -q -t -c "grant select on all tables in schema ${schema_name} to readonly;" /usr/local/pgsql/bin/psql -d ${db_name} -q -t -c "grant usage on schema ${schema_name} to readonly;" /usr/local/pgsql/bin/psql -d ${db_name} -q -t -c "alter default privileges in schema ${schema_name} grant select on tables to readonly;" done < /tmp/schema_list.logdone < /tmp/db_list.logexit 0然后就可以在服务器上批量执行了。
参考链接:
https://www.postgresql.org/docs/9.3/static/sql-grant.html
https://www.postgresql.org/docs/9.4/static/sql-alterdefaultprivileges.html
视图
权限
赋权
用户
功能
命令
脚本
参考
事情
多个
实例
对象
意义
手动
数据
时刻
时间
服务器
现实
网站
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
数据从内网传到服务器的过程
湖北企业网络安全
西城区省电软件开发检修
烟台龙口dns的服务器地址
Nou网络技术是什么意思
上海夺畅网络技术有限公司怎样
网络安全专业术语文库
我国网络安全现状简介
sony通用数据库
软件开发职业圈
宁波报纸数据库
未上市互联网科技公司排名
北京软件开发设施厂家现货
打开数据库备份
app软件开发公司合肥
冻害数据库
镇江专业网络安全准入控制哪家好
怎么找软件开发客户
付款给了北京班信网络技术
鸿蒙系统无法访问服务器
聊城网络安全公共实训基地
下载服务器安全狗
linux远程服务器拒绝访问
三级数据库技术视频教程
信息管理系统数据库的制作
上海hr软件开发
西藏智慧养老软件开发
四川北斗卫星授时服务器云空间
暗黑三数据库有app没
找中小学生家庭教育与网络安全