在阿里云RDS中的PostgreSQL数据库中,超级用户是没有给到最终用户的,而是给了一个比较大权限的用户,这个用户可以创建数据库,可以创建用户,在通常情况下都是够用的。最近业务方给我提了一个需求,需要建一个只读用户,这个只读用户不能有DDL的权限。目前发现在阿里云RDS提供的PostgreSQL数据库中,无法满足此需要,原因是,任何用户都能创建表,无法禁止用户创建表的权限,更深层次的原因为:
1. 模板数据库template1中的有一个名称为“public”的schema,这个“public”的schema的属主是超级用户,而这个超级用户阿里云没有给到最终用户。而用户自己创建出来的数据库都是从template1拷贝的,所以用户创建出来的数据库中也有一个名称为“public”的schema,而这个“public”的schema的属主仍然是原先的超级用户,而任何人都有在这个“public”的schema中创建表的权限,而因为我们这些RDS使用用户没有超级用户的权限,所以无法用“revoke create on schema public from public”的方法取消任何用户在此schema建表的权限。而又因为这个“public”的schema的属主是超级用户,我们也无法删除掉这个schema。
目前我们自己是无法解决此问题,只能由阿里云来解决,解决的建议方法如下:
1. 建议阿里云默认创建出来的实例把在schema “public”中创建表的权限回收。
2. 再创建一个的模板数据,如名称为template2,)然把这个模板数据库中的public schema删除掉。
create database template2;
UPDATE pg_database SET datistemplate='true' WHERE datname='template2';
drop schema public;
这样用户可以从template2复制出一个数据库:
create database userdb01 template template2;
这样建出来的数据库userdb01中是没有“public”这个schema的,用户如果想使用“public”这个schema,可以自己建,因为是用户自己建的“public”的这个schema,这个“public”的属主是用户自己,而不是阿里云的超级用户,这样用户想让谁能在这个“public”的schema中创建表或其它权限,他都可以直接赋权了。
微信关注我们
原文链接:https://yq.aliyun.com/articles/63246
转载内容版权归作者及来源网站所有!
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
相关文章
发表评论
资源下载
更多资源优质分享Android(本站安卓app)
近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。
Mario,低调大师唯一一个Java游戏作品
马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。
Eclipse(集成开发环境)
Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。
Sublime Text 一个代码编辑器
Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。