PostgreSQL7.0手冊-用戶手冊-15. 管理數據庫 16. 磁盤存儲
2019-09-08 23:33:08
供稿:網友
第十五章. 管理數據庫
內容
創建數據庫
變換數據庫位置
訪問數據庫
刪處數據庫
注意: 本節當前是教程里相關章節的一個微變的拷貝.請提意見.(譯得不好也請提意見 - 譯者?。海? thomas 1998-01-12
盡管 節點數據庫管理員 負責Postgres 安裝和總體管理, 節點內還是有一些數據庫要由其他人來管理,也即 數據庫管理員. 這種權限的賦予發生在創建數據庫時. 一個用戶可以賦予明確的創建數據庫和/或創建新用戶的權限.一個同時擁有上面兩種權限的用戶可以進行絕大多數Postgres 的管理工作, 但缺省時不會擁有與節點數據庫管理員同樣的操作系統權限.
數據庫管理員手冊將更詳細地討論這些問題.
創建數據庫
在 Postgres 環境里用 create database 創建數據庫.createdb 是一個在 Postgres 外創建數據庫的命令行工具.
在使用這些命令時, Postgres 后端必須在正常地運行,而且使用這些命令的用戶要么是Postgres超級用戶要么是由超級用戶賦予了創建數據庫權限的用戶.
要創建名為“mydb” 的數據庫,在命令行上鍵入:
% createdb mydb
或者在 psql 里鍵入:
=> CREATE DATABASE mydb;
實現同樣的功能.
如果你沒有創建數據庫的權限,你將看到如下信息:
ERROR: CREATE DATABASE: Permission denied.
Postgres 允許你在同一臺節點上創建任意數量的數據庫,在創建數據庫后你自動成為這些數據庫的管理員.數據庫名必須是(英文)字母開頭,最大長度32個字符.
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
更改數據庫位置
我們可以在一個非缺省位置創建數據庫(數據庫的缺省位置是安裝路徑).因為任何數據庫的訪問實際上都是通過數據庫后端進行的,所以數據庫的任何具體的路徑必須是后端可以訪問的(也就是數據庫超級用戶有讀寫權限).
可選的數據庫位置是通過環境變量來創建和引用的,這個環境變量給出指定存儲位置的絕對路徑。這個聲明數據庫位置的環境變量必須在后端運行前聲明,并且它指向的位置必須為postgres管理員帳戶可寫。有關預配置數據庫位置的問題,請與你的節點數據庫管理員商議。任何有效的環境變量名都可以用于引用一個可選路徑,盡管我們建議使用帶有“PGDATA”前綴的使用環境變量名以避免和其他變量沖突?!?
注意:在以前版本的 Postgres,還允許用一個絕對路徑來聲明一個可選的存儲位置。盡管我們推薦使用環境變量的方法(因為這樣可以令節點管理員在管理磁盤空間時更靈活)我們還是允許使用絕對路徑的方法來聲明一個可選的位置。管理員手冊描述了如何打開這個特性。
從安全性和完整性角度出發,采用的任何路徑或環境變量都有一些附加路徑域附在后面.必須運行 initlocation 為更改數據庫位置做準備.
要使用環境變量 PGDATA2 創建數據存儲區(本例中設置為 /alt/postgres),確?!?alt/postgres 已經存在并且可以被 Postgres 管理員帳戶寫。然后在命令行上鍵入:
% initlocation PGDATA2
Creating Postgres database system directory /alt/postgres/data
Creating Postgres database system directory /alt/postgres/data/base
用下面的命令在命令行上在 PGDATA2 位置上創建存儲區:
% createdb -D PGDATA2 mydb
在 psql 里實現這些的方法是鍵入:
=> CREATE DATABASE mydb WITH LOCATION = 'PGDATA2';
如果你沒有創建數據庫的權限,你將看到如下信息:
ERROR: CREATE DATABASE: permission denied
如果聲明的路徑不存在或數據庫后端沒有讀寫該路徑的權限,你將會看到如下信息:
ERROR: The database path '/no/where' is invalid. This may be due to a character that is not allowed or because the chosen path isn't permitted for databases.
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
訪問數據庫
一旦你創建了一個數據庫,你可以通過下面方法訪問它:
運行 Postgres 終端監控程序(如: psql?。?,你可以在其中交互地輸入,編輯和執行SQL 命令.
使用 LIBPQ 函數庫寫一個C程序. 這樣,你可以在C里提交一條 SQL 命令,并且在程序里得到結果和返回信息.這些接口將在 PostgreSQL 程序員手冊討論.
你可以運行 psql, 試一下這本手冊的例子.我們可以用mydb 數據庫來激活之.
% psql mydb
你將看到如下歡迎信息:
Welcome to psql, the PostgreSQL interactive terminal.
Type: /copyright for distribution terms
/h for help with SQL commands
/? for help on internal slash commands
/g or terminate with semicolon to execute query
/q to quit
mydb=>
這個提示符表明你已經進入終端監控器并可以鍵入SQL查詢到由終端監控器管理的工作區中.psql 響應由“/”開頭的轉意字符.比如,你可以鍵入下面命令獲得各種PostgresSQL 命令的語法幫助:
mydb=> /h
一旦你完成向工作區的查詢輸入,你可以鍵入下面內容將你的工作區提交給Postgres 服務器:
mydb=> /g
這句話告訴服務器處理查詢.如果你的查詢以分號結尾,就不必使用 “/g” 命令. psql 將自動處理由分號結尾的查詢.要想從文件里讀入查詢,比如說 myFile, 而不是在命令行上交互地輸入,鍵入:
mydb=> /i fileName
mydb=> /i fileName
從 psql 中退出回到 UNIX, 鍵入
mydb=> /q
psql 將退出并回到你的命令行上.(有關更多脫字符的信息,在提示符上鍵入 /?.)空白(比如,空格,tabs 和新行等) 可以自由地在 SQL 查詢里使用.單行注釋使用“--”.該行所有在這個符號后面的內容都將被忽略.多行注釋或行內注釋,使用 “/* ... */”.
數據庫權限
表權限
TBD
(譯注:TBD?To Be Develop?內容呢?我可不是偷懶:)
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
刪除數據庫
如果你是數據庫 mydb 的管理員, 你可以用下面 UNIX 命令刪除它:
% dropdb mydb
這個動作物理上刪除所有與該數據庫相關的 UNIX 文件,并且不可恢復,所以干這件事之前一定要認真想清楚.
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
第十六章. 磁盤存儲
本章需要有人寫,有一些信息在FAQ里.愿當志愿者嗎?(譯注:在最新版本中仍然空白,真希望我們也能幫點忙.) - thomas 1998-01-11
------------------------------------------------------------------------------