为什么PostgreSQL中的所有数据库都有公共模式?

时间:2010-01-25 18:27:35

标签: postgresql

我很好奇为什么PostgreSQL中的所有数据库都有一个public架构,所有用户都可以访问它。我知道我可以撤销权限并将其授予一个用户,但为什么这不是默认用户?

2 个答案:

答案 0 :(得分:33)

没有太多理由,但请参阅手册中的[5.7.6][1]部分,但我认为以下内容可以回答您的问题:

  

如果您不创建任何模式,则所有用户都会隐式访问公共模式。这模拟了模式根本不可用的情况。当数据库中只有一个用户或少数合作用户时,主要建议使用此设置。此设置还允许从非模式感知世界平稳过渡。

答案 1 :(得分:1)

我的猜测是SQL规范。但是,create user除此之外,这是否合乎逻辑,要求您明确说出用户也可以访问哪个模式?

如果您的用户无权访问任何单个共享资源,为什么不为他们创建新数据库呢?与MySQL不同,新数据库是新数据库,而不是新模式的别名。

我只是想澄清这一点,这意味着每个数据库都有自己的public.架构。