資料庫PostrageSQL-管理資料庫
Chapter 22. 管理資料庫
每個正在執行的PostgreSQL伺服器例項都管理著一個或多個資料庫。因此,在組織SQL物件(“資料庫物件”)的層次中,資料庫位於最頂層。本章描述資料庫的屬性,以及如何建立、管理、刪除它們。
22.1. 概述
一個資料庫是一些SQL物件(“資料庫物件”)的命名集合。通常每個資料庫物件(表、函式等) 屬於並且只屬於一個資料庫(不過有幾個系統表如pg_database屬於整個集簇並且對集簇中的每個資料庫都是可訪問的)。更準確地說,一個資料庫是一個模式的集合, 而模式包含表、函式等等。因此完整的層次是這樣的:伺服器、資料庫、模式、表(或者某些其他物件型別,如函式)。
當連線到資料庫伺服器時,客戶端必須在它的連線請求中指定它要連線的資料庫名。每次連線不能訪問超過一個資料庫。不過,一個應用能夠在同一個或者其他資料庫上開啟的連線數並沒有受到限制。資料庫是物理上相互隔離的,並且訪問控制是在連線層面進行管理的。
如果一個PostgreSQL伺服器例項用於承載那些應該分隔並且相互之間並不知曉的使用者 和專案,那麼我們建議把它們放在不同的資料庫裡。如果專案或者使用者是相互關聯的, 並且可以相互使用對方的資源,那麼應該把它們放在同一個資料庫裡,但可能在不同的模式中。
模式只是一個純粹的邏輯結構並且誰能訪問某個模式由許可權系統管理。有關管理模式的更多資訊在Section 5.8中。
資料庫是使用CREATE DATABASE(見Section 22.2),並且用DROP DATABASE命令刪除(見Section 22.5)。要確定現有資料庫的集合,可以檢查系統目錄pg_database,例如
SELECT datname FROM pg_database;
psql程式的\l元命令和-l命令列選項也可以用來列出已有的資料庫。
SQL標準把資料庫稱作“目錄”,不過實際上沒有區別。
22.2. 建立一個資料庫
為了建立一個資料庫,PostgreSQL伺服器必須啟動並執行(見Section 18.3)。資料庫用 SQL 命令CREATE DATABASE建立:
CREATE DATABASE name;
其中name遵循SQL識別符號的一般規則。當前角色自動成為該新資料庫的擁有者。以後刪除這個資料庫也是該擁有者的特權(同時還會刪除其中的所有物件,即使那些物件有不同的擁有者)。
建立資料庫是一個受限的操作。如何授權請見Section 21.2。因為你需要連線到資料庫伺服器來執行CREATE DATABASE命令, 那麼還有一個問題是任意給定站點的第一個資料庫是怎樣建立的?第一個資料庫總是由initdb命令在初始化資料儲存區域時建立的(見Section 18.2)。這個資料庫被稱為postgres。因此要建立第一個“普通”資料庫時,你可以連線到postgres。
在資料庫集簇初始化期間也會建立第二個資料庫template1,。當在集簇中建立一個新資料庫時,實際上就是克隆了template1。這就意味著你對template1所做的任 何修改都會體現在所有隨後建立的資料庫中。因此應避免在template1中建立物件,除非你想把它們傳播到每一個新建立的資料庫中。詳見Section 22.3。
為了方便,你還可以用一個程式來建立新資料庫: createdb。
createdb dbname
createdb沒什麼神奇的。它連線到postgres資料庫並且發出CREATE DATABASE命令,和前面介紹的完全一樣。createdb參考頁包含了呼叫細節。注意不帶任何引數的createdb將建立一個使用當前使用者名稱的資料庫。
Chapter 20包含有關如何限制誰能連線到一個給定資料庫的資訊。
有時候你想為其他人建立一個資料庫,並且使其成為新資料庫的擁有者, 這樣他們就可以自己配置和管理這個資料庫。要實現這個目標,使用下列命令之一: 用於 SQL 環境的
CREATE DATABASE dbname OWNER rolename;
或者用於 shell 的
createdb -O rolename dbname
只有超級使用者才被允許為其他人(即為一個你不是其成員的角色)建立一個資料庫。
相關文章
- 資料庫PostrageSQL-預置選項資料庫SQL
- MySQL資料庫資料管理MySql資料庫
- 資料庫與資料庫管理系統概述資料庫
- 資料庫的管理資料庫
- 資料庫⽇志管理資料庫
- SpringBoot資料庫管理 - 用Liquibase對資料庫管理和遷移?Spring Boot資料庫UI
- phpMyAdmin管理資料庫和資料表PHP資料庫
- 資料庫管理-第122期 配置Halo資料庫(202301204)資料庫
- 資料庫管理-第120期 初探Halo資料庫(202301201)資料庫
- 資料庫管理:DBeaverEE for Mac資料庫Mac
- postgresql 資料庫基本管理SQL資料庫
- 資料庫雲容量管理資料庫
- Oracle資料庫管理——表資料庫高水位及shrink操作Oracle資料庫
- 全平臺資料(資料庫)管理工具 DataCap 管理 Rainbond 上的所有資料庫資料庫AI
- 雲資料庫管理與資料遷移資料庫
- 資料庫管理丨10種不同的雲開發資料庫管理技巧資料庫
- 資料庫的資訊保安管理資料庫
- SQL資料庫備份管理SQL資料庫
- Navicat Premium 15 資料庫管理REM資料庫
- 資料庫管理Valentina Studio Pro資料庫
- 1.1.1. 資料庫管理員資料庫
- PolarDB資料庫LVM管理配置資料庫LVM
- 管理SQL Server資料庫安全SQLServer資料庫
- 資料庫管理-第124期 資料庫圈的夜郎自大,危!(202301213)資料庫
- 【資料庫資料恢復】SAP資料庫資料恢復案例資料庫資料恢復
- 資料庫圈周盤點:資料庫執行管理員成新職業;資料庫公司Neon獲新融資資料庫
- 【PG管理】postgresql資料庫管理相關SQL資料庫
- 【資料庫資料恢復】MS SQL資料庫附加資料庫出錯怎麼恢復資料?資料庫資料恢復SQL
- 資料湖 vs 倉庫 vs 資料庫資料庫
- 【Falsk 使用資料庫】---- 資料庫基本操作資料庫
- 資料庫概論 (一)資料庫概念資料庫
- 資料庫介紹--初識資料庫資料庫
- 資料庫 資料庫的完整性資料庫
- 【資料庫資料恢復】Sql Server資料庫資料恢復案例資料庫資料恢復SQLServer
- DataX將MySql資料庫資料同步到Oracle資料庫MySql資料庫Oracle
- VMware Data Services Manager 2.1 - 資料庫管理和資料服務管理資料庫
- 織夢資料庫_織夢還原資料庫_織夢資料庫很卡資料庫
- 生產資料庫、開發資料庫、測試資料庫中的資料的區分資料庫