PostgreSQL 創(chuàng)建一個(gè)數(shù)據(jù)庫

2021-08-31 15:29 更新

為了創(chuàng)建一個(gè)數(shù)據(jù)庫,PostgreSQL服務(wù)器必須啟動(dòng)并運(yùn)行(見第 18.3 節(jié))。

數(shù)據(jù)庫用 SQL 命令CREATE DATABASE創(chuàng)建:

CREATE DATABASE name;

其中name遵循SQL標(biāo)識(shí)符的一般規(guī)則。當(dāng)前角色自動(dòng)成為該新數(shù)據(jù)庫的擁有者。以后刪除這個(gè)數(shù)據(jù)庫也是該擁有者的特權(quán)(同時(shí)還會(huì)刪除其中的所有對(duì)象,即使那些對(duì)象有不同的擁有者)。

創(chuàng)建數(shù)據(jù)庫是一個(gè)受限的操作。如何授權(quán)請(qǐng)見第 21.2 節(jié)。

因?yàn)槟阈枰B接到數(shù)據(jù)庫服務(wù)器來執(zhí)行CREATE DATABASE命令, 那么還有一個(gè)問題是任意給定站點(diǎn)的第一個(gè)數(shù)據(jù)庫是怎樣創(chuàng)建的?第一個(gè)數(shù)據(jù)庫總是由initdb命令在初始化數(shù)據(jù)存儲(chǔ)區(qū)域時(shí)創(chuàng)建的(見第 18.2 節(jié))。這個(gè)數(shù)據(jù)庫被稱為 postgres 。因此要?jiǎng)?chuàng)建第一個(gè)普通數(shù)據(jù)庫時(shí),你可以連接到postgres

在數(shù)據(jù)庫集簇初始化期間也會(huì)創(chuàng)建第二個(gè)數(shù)據(jù)庫template1, 。當(dāng)在集簇中創(chuàng)建一個(gè)新數(shù)據(jù)庫時(shí),實(shí)際上就是克隆了template1。這就意味著你對(duì)template1所做的任 何修改都會(huì)體現(xiàn)在所有隨后創(chuàng)建的數(shù)據(jù)庫中。因此應(yīng)避免在template1中創(chuàng)建對(duì)象,除非你想把它們傳播到每一個(gè)新創(chuàng)建的數(shù)據(jù)庫中。詳見第 22.3 節(jié)。

為了方便,你還可以用一個(gè)程序來創(chuàng)建新數(shù)據(jù)庫: createdb

createdb dbname

createdb沒什么神奇的。它連接到postgres數(shù)據(jù)庫并且發(fā)出CREATE DATABASE命令,和前面介紹的完全一樣。createdb參考頁包含了調(diào)用細(xì)節(jié)。注意不帶任何參數(shù)的 createdb將創(chuàng)建一個(gè)使用當(dāng)前用戶名的數(shù)據(jù)庫。

注意

第 20 章包含有關(guān)如何限制誰能連接到一個(gè)給定數(shù)據(jù)庫的信息。

有時(shí)候你想為其他人創(chuàng)建一個(gè)數(shù)據(jù)庫,并且使其成為新數(shù)據(jù)庫的擁有者, 這樣他們就可以自己配置和管理這個(gè)數(shù)據(jù)庫。要實(shí)現(xiàn)這個(gè)目標(biāo),使用下列命令之一: 用于 SQL 環(huán)境的

CREATE DATABASE dbname OWNER rolename;

或者用于 shell 的

createdb -O rolename dbname

只有超級(jí)用戶才被允許為其他人(即為一個(gè)你不是其成員的角色)創(chuàng)建一個(gè)數(shù)據(jù)庫。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)