schem介绍:
什么是schema?
用户对象的集合叫做模式
不同模式下的对象可以同名
可以把用户下对象根据业务分类,不同的对象放在不同的模式
一个用户可以创与拥有多个模式
一个模式只能属于一个用户
普通用户创建模式需要授权指定数据库下的创建权限
授权
grant create on database davdb to dav;
创建模式
create schema dav
create schema dav6
查看模式
\dn
删除模式
drop schema dav;
drop schema dav scade;
public模式
初始化数据库时会自动创建一个public模式,共享给所有用户使用,任何用户都可以把对象创建在该模式下。
由于PG下一个用户对应多个模式,创建用户时没有创建对应的默认模式,而对象都是基于模式管理的,所以创建了一个公用的模式public。
基于数据库安全考虑,可以删除public模式。
搜索路径search_path
search_path指定默认搜索的模式,示例如下
TYPE DATABASE USER ADDRESS METHO
postgres=# set search_path = "$user", public,dav;
SET
postgres=# show search_path;
search_path
"$user", public, dav
(1 row)
权限管理
每个数据库对象都有一个所有者,默认情况下,所有者拥有该对象的所有权限。
在数据库中所有的权限都和角色挂钩,postgresql权限分为两部分:
系统权限:对数据库进行操作的权限
对象权限:对某个对象进行操作的权限
对超级用户postgres不做权限检查,其它用户走ACL(Access ControL List)
对于数据库对象,开始只有所有者和超级用户可以做任何操作,其它走ACL
