PostgreSQL資料庫 表空間 角色及使用者

2021-06-29 06:08:17 字數 4195 閱讀 5483



postgresql資料庫、表空間、角色及使用者

2013-02-26 17:34:55

分類: mysql/postgresql

一、建立資料庫

1、通過pgadmin建立資料庫testdb1:

開啟資料庫testdb1看到建庫指令碼:

在目錄——postgresql(pg_catalog)——資料表——pg_database中可以檢視多了乙個資料庫testdb1:

此時,在e:\postgresql\data\base下的資料夾如下:

以上說明,建立的資料庫使用預設表空間(pg_default),資料資料夾使用oid命名。

同時,在e:\postgresql\data\local下也會增加一些檔案。

注:postgresql的oid:行的物件表示符(物件id);postgresql的xid:事務id;

這兩個id都是4位元組的整數,在超過40億時將溢位,此後會出現重複,所以,假設它們唯一是錯誤的,除非你自己採取了措施來保證它們是唯一的。

2、通過psql命令列建立資料庫:

postgres=# create database "testdb2";

create database

postgres=# 

postgres=# select oid,datname from pg_database;

oid  |  datname  

-------+-----------

1 | template1

11905 | template0

11913 | postgres

16393 | testdb1

16394 | testdb2

(5 行記錄)

從pgadmin開啟,兩者建庫指令碼一樣,說明都是使用的預設引數;

二、建立表空間

1、通過pgadmin建立表空間

建立表空間必須首先建空目錄,假設建資料夾:e:\postgresql\data\testdbs1,建表空間是選擇該目錄。

開啟表空間testdbs1, 可以看到建表空間指令碼:

2、通過psql命令列建立表空間

postgres=# create tablespace "testdbs2" location 'e:\postgresql\data\testdbs2';

create tablespace

三、建立角色、使用者

角色與使用者的區別:

角色就相當於崗位:角色可以是經理,助理。

使用者就是具體的人:比如陳xx經理,朱xx助理,王xx助理。

1、通過pgadmin建立角色

建立角色testrole1,輸入密碼,分配許可權,需要分配login許可權系統才會自動建立同名使用者testrole1。

開啟角色testrole1,可以看到建立角色指令碼:

2、通過psql命令列建立角色

postgres=# create role "testrole2";

create role

postgres=# select rolname from pg_roles;

rolname  

-----------

postgres

testrole1

testrole2

(3 行記錄)

postgres=# select usename from pg_user;

usename  

-----------

postgres

testrole1

(2 行記錄)

postgres=# create role "testrole3" login;

create role

postgres=# select rolname from pg_roles;

rolname  

-----------

postgres

testrole1

testrole2

testrole3

(4 行記錄)

postgres=# select usename from pg_user;

usename  

-----------

postgres

testrole1

testrole3

(3 行記錄)

角色testrole2建立時沒有分配login許可權,所以沒有建立使用者;在pgadmin的「登入角色」中看不到,到pg_authid中把rolcanlogin欄位由false改為true,系統自動建立同名使用者,此時在「登入角色」中才可以看到。

也可以通過sql命令給該角色分配login許可權,系統將自動建立同名使用者testrole2:

postgres=# select usename from pg_user;

usename  

-----------

postgres

testrole1

testrole3

testrole2

(4 行記錄)

testrole3角色建立時分配了login許可權,系統自動建立乙個同名的使用者testrole3。

通過psql命令列建立使用者

postgresql的create role與create user命令是等效的,只是前者預設是非login的,而後者預設是login的。

postgres=# create user "testuser11" with password 'testuser11' login in role "testrole1";

create role

postgres=# select rolname from pg_roles;

rolname   

------------

postgres

testrole1

testrole3

testrole2

testuser11

(5 行記錄)

postgres=# select usename from pg_user;

usename   

------------

postgres

testrole1

testrole3

testrole2

testuser11

(5 行記錄)

postgres=# create user "testuser1";

create role

postgres=# select rolname from pg_roles;

rolname   

------------

postgres

testrole1

testrole3

testrole2

testuser11

testuser1

(6 行記錄)

postgres=# select usename from pg_user;

usename   

------------

postgres

testrole1

testrole3

testrole2

testuser11

testuser1

(6 行記錄)

PostgreSQL每日一貼 資料庫磁碟空間占用

任何資料庫都存在表膨脹的風險,資料庫設計時,應該識別出會頻繁更新 包括新增 刪除 更新記錄 的表。對錶 表空間做出可能達到的最大值的預判。資料庫空閒空間管理,postgresql 8.3及之前前採用的是單一檔案管理資料檔案空閒空間的方式,postgresql 8.4修改為了對每個資料檔案都建立乙個空...

Oracle匯出空表資料庫

經常我們在匯出資料庫進行備份的時候,會發現有些空表沒有匯出,如何匯出包含空表的完整資料庫呢?那麼請按照下面的方法進行即可。1.使用plsql工具,連線oracle資料庫 2.開啟乙個sql視窗,用以下這句查詢空表並生成執行命令 1select alter table table name alloc...

PostgreSQL資料庫修改sql表的方法彙總

一,修改表 postgresql 提供了一族命令用於修改現有表。可以實現 增加字段,刪除字段,增加約束,刪除約束,修改預設值,重新命名字段,重新命名表。這些操作可以用 alter table命令執行的。1,增加字段 要增加乙個字段,使用這條命令 alter table products add co...