一、 角色(role)和用户(user)
1. role
postgres=# create role kanon password 'kanon'; #使用role创建的用户默认不允许登录
postgres=# alter role kanon login; #修改kanon可以登录
2. user
postgres=# create user kanon2 password 'kanon2'; #使用user创建的用户默认可以登录
二、数据库(database)和模式(schema)的关系
模式(schema)是对数据库(database)的逻辑分割
1. 在数据库初始化时,就默认为数据库创建了一个模式--public,这也是数据库的默认模式,所有为此数据库
创建的对象(表,函数,视图,索引,序列等)都是常见在这个模式中的。
2. 查看模式: \dn 创建模式: create schema kanon owner kanon
创建一张表指定模式: create table kanon.test (id integer not null);
3. 官方建议:当管理员创建一个数据库后,应该为所有可以连接到该数据库的用户分别创建一个与用户名相同
的模式,然后将search_path设置为“$user”,这样当某个用户连接上来以后,都会默认定位到同名模式中。
三、 数据库(database)和表空间的关系
1. 创建一个表时,默认的表空间是--pg_default,这是因为postgres中,数据库的创建是通过克隆数据库模板
来实现的,create database dbname并没有指明数据库模板,所以系统将默认克隆template1数据库,得到
新的数据库dbname,而template1数据库的默认表空间是pg_default,这个表空间也是数据库初始化时候创建
的,所以template1中的对象被同步克隆到新的数据库中,完整创建数据库的语法是这样的:create database
dbname owner kanon template template1 tablespace tablespacename
2. 创建一个表空间:create tablespace tskanon owner kanon location /tmp/data/tskanon
表空间是一个目录,里面存储它所包含的数据库各种物理文件。