在Postgres数据库中,应用程序数据可以以不同的方式组织使用Postgres模式。Postgres数据库集群,每当我们创建一个新的数据库时,它会创建默认的模式被称为公共模式。这篇文章将会讨论在PostgreSQL 15公共模式安全升级。

当我们创建一个表没有指定模式名,它被创建的模式,这是设置的search_path。默认情况下,search_path的第一部分定义名称相同的模式当前用户,第二个search_path指的一部分公共模式

Postgres顺序查找模式根据列表中提到的search_path,所以当我们执行create table命令、Postgres创建表在第一模式search_path中提到。如果它不存在,就创建它下面的模式。

同样,如果没有指定模式名select查询,Postgres将搜索表内根据指定的模式search_path

公共模式安全升级在PostgreSQL 15

Postgres 14,当你创建一个数据库用户,默认情况下,它被创建创建使用公共模式上的特权。

这意味着直到Postgres 14,任何用户都可以手动编写公共模式直到你撤销用户的创建特权在公共模式。

PostgreSQL 15日开始创建公共模式特权撤销/删除从所有用户除了数据库所有者。

Postgres 15,现在新用户不能创建表或写数据Postgres公共默认模式。你必须手动授予创建新用户权限。

使用新用户特权在公共模式仍然存在Postgres 15,像Postgres 14和以前的版本。

下面的例子显示了一个新用户(test1)可以创建一个表在Postgres 14不授予任何权限。

下面的例子显示,Postgres 15只允许新用户(test1)创建表发放创建特权的公共模式

下面的例子表明,使用特权公共模式Postgres 15中的新用户仍然存在,如Postgres 14和以前的版本。

公共模式所有权变化PostgreSQL 15

在Postgres 14和以前的版本,默认情况下,公共模式属于引导超级用户(postgres),但从postgres 15,公共所有权模式已经改变到新的pg_database_owner的角色。它使每个数据库所有者拥有数据库的公共模式。

下面的例子显示了所有权变化之间的Postgres 14和15 Postgres。

Postgres 14

Postgres 15

下面的链接访问详情Postgres模式。

https://www.postgresql.org/docs/15/ddl-schemas.html

https://www.postgresql.org/docs/release/15.0/

雷竞技下载官网Percona分布PostgreSQL提供最好的和最关键的企业组件从开源社区在一个分布,设计和测试一起工作。

raybet52

订阅
通知的
客人

0评论
内联反馈
查看所有评论