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...