我很好奇为什么PostgreSQL中的所有数据库都有一个public
架构,所有用户都可以访问它。我知道我可以撤销权限并将其授予一个用户,但为什么这不是默认用户?
答案 0 :(得分:33)
没有太多理由,但请参阅手册中的[5.7.6][1]部分,但我认为以下内容可以回答您的问题:
如果您不创建任何模式,则所有用户都会隐式访问公共模式。这模拟了模式根本不可用的情况。当数据库中只有一个用户或少数合作用户时,主要建议使用此设置。此设置还允许从非模式感知世界平稳过渡。
答案 1 :(得分:1)
我的猜测是SQL规范。但是,create user
除此之外,这是否合乎逻辑,要求您明确说出用户也可以访问哪个模式?
如果您的用户无权访问任何单个共享资源,为什么不为他们创建新数据库呢?与MySQL不同,新数据库是新数据库,而不是新模式的别名。
我只是想澄清这一点,这意味着每个数据库都有自己的public.
架构。