PostgreSQL对现有,新建的表和视图授权给用户
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,由于开发提出需求:(1)在多个PostgreSQL的instacne上面创建一个readonly用户,仅对数据库里面的表或者视图(包括物化视图)有仅有select权限,并且对以后新建的表和视图也要有s
千家信息网最后更新 2026年11月01日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安全错误
数据库的锁怎样保障安全
上海喔噻互联网科技有限公司
盈实互联网科技
互联网巨头反垄断金融科技
互联网科技金融
华宇互联网科技
亿策互联网科技
无线互联网科技
银川新华互联网科技学校地址
哈尔滨屹滨互联网科技有限公司
玉溪新华互联网科技好不好
智帮互联网科技公司最近动向
银行科技岗属于互联网吗
陕西云淼互联网科技公司
广州燕处互联网科技有限公司
科技互联网行业投资研究
科技互联网经济论坛
互联网科技创业计划的风险分析
科技发展第三阶段互联网时代
武汉亿视互联网科技有限公司
小牛互联网科技有限公司地址
互联网科技公司简介
互联网电商科技
疫情对互联网科技公司影响
互联网科技卖菜
互联网科技论文
互联网 视角下的科技创新
互联网科技股有哪些
互联网为啥属于高科技
和信科技工业互联网
互联网科技品牌