PostgreSQL的模式权限(一)

一个新建的PostgreSQL数据库包含一个叫做public的预定义模式。

查询模式的权限
如果我们使用psql命令行界面,我们可以使用\d+命令来列出所有的模式和相关的权限。
PostgreSQL的模式权限(一)_第1张图片
如图所示,第一列为模式名,有两个模式,一个为默认创建的public,还有一个为之前手动创建的test模式。
本文只关注public这个模式,第二列中显示它的所有者为角色“postgres”。除非特定指出,模式的所有权属于创建这个模式的角色。
第三列显示出访问权限。
第四列显示了相关的描述信息。

第三列的访问权限是本文接下来要主要介绍的部分。
权限信息的格式包含三部分,从左到右为:接受权限者、权限、权限授予者。例如,图中所示的权限信息可以解读为:postgres(接受权限者)=UC(权限)/postgres(权限授予者)。
对模式来说,只有两种可能被授予的权限:USAGE和CREATE,对应权限信息中分别为U和C。
USAGE权限允许角色查询数据库对象,例如包含在模式中的表和视图。
CREATE权限允许角色在模式中创建数据库对象。

需要注意的是:
可能会出现多个相关的权限信息,此时列出权限信息的时候会使用加号来分隔。而且我们注意到public模式的权限信息中,第二行里接受权限者为空字符串,这代表权限会授予给所有的用户。

综上所述,public模式的权限配置比较灵活,但是也易导致一些安全隐患,所以如果不需要使用public模式可以将它删除或者撤销默认的权限来将它锁定,我们将在下一篇文章中介绍相关的操作。

By Kalath

你可能感兴趣的:(PostgreSQL,Highgo,DB)