1. 程式人生 > >postgres表空間、模式、表和用戶/角色之間的關系

postgres表空間、模式、表和用戶/角色之間的關系

cat postgre pass dbn ole search pat location 相同

一、 角色(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
表空間是一個目錄,裏面存儲它所包含的數據庫各種物理文件。

postgres表空間、模式、表和用戶/角色之間的關系