PostgreSQL数据库、表空间、角色及用户
一、創建數據庫
1、通過pgAdmin創建數據庫TestDb1:
打開數據庫TestDb1看到建庫腳本:
在目錄——PostgreSQL(pg_catalog)——數據表——pg_database中可以查看多了一個數據庫TestDb1:
select oid,* from pg_database;
?
此時,在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数据库、表空间、角色及用户的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Failed to load sql m
- 下一篇: Error parsing HTTP r