PostgreSQL对现有,新建的表和视图授权给用户
发表于:2025-02-03 作者:千家信息网编辑
千家信息网最后更新 2025年02月03日,由于开发提出需求:(1)在多个PostgreSQL的instacne上面创建一个readonly用户,仅对数据库里面的表或者视图(包括物化视图)有仅有select权限,并且对以后新建的表和视图也要有s
千家信息网最后更新 2025年02月03日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安全错误
数据库的锁怎样保障安全
服务器切时间
部队手机网络安全管理
研究网络安全的学者
数据库中小数类型是什么
实惠的app软件开发流程
频繁与二代游戏服务器失去连接
公安网络安全专项整治情况汇报
天津互联网科技产业
通州区进口软件开发单价
小米连不上服务器
php连接数据库后报错404
mssql数据库绿色版
关于网络安全的博客文章英语作文
不用数据库的律师
我的世界最完美服务器
山西政府服务器平台
如何设计数据库Java
网络安全科普图片
网络安全竞赛包括哪些方面
声光电道德与法治展馆软件开发
对数据库熟悉怎么说
数据库bin
网络技术在幼儿科学活动中
网络安全研究院联系方式
专升本网络技术要求
网络安全探针的价格
软件开发岗位的认识和理解
浙江特种网络技术分类服务标准
软件开发合同有效期
网络安全管理机制不健全