Chapter 6. 資料庫使用者和權限

Table of Contents
6.1. 資料庫使用者
6.2. 使用者屬性
6.3.
6.4. 權限
6.5. 函數和觸發器

每個資料庫集群都包含一個資料庫使用者的集合。 這些使用者是和那些在同一個伺服器上運行的操作系統的使用者相獨立的。 使用者擁有資料庫物件(比如說,表)以及可以把這些物件的權限賦予 其它使用者,這樣就能控制誰可以存取哪些物件。

本章描述如何建立和管理使用者,以及介紹權限系統。 有關各種類型的資料庫物件和權限的效果可以在 PostgreSQL 7.3 使用者手冊 中找到。

6.1. 資料庫使用者

資料庫使用者從概念上與操作系統使用者是完全無關的. 在實際使用中把它們對應起來可能比較方便,但不是必須的. 資料庫使用者名在整個資料庫集群中是全局的(而不是每個庫不同). 要建立一個使用者,使用 SQL 命令 CREATE USER

CREATE USER name

name 遵循 SQL 標識的規則: 要麼完全沒有特殊字元,要麼用雙引號引起. 要刪除一個現有使用者,使用類似的命令 DROP USER

DROP USER name

為了方便,shell 腳本createuserdropuser 提供了對了這些 SQL 命令的封裝. 我們可以在 shell 命令上直接調用它們:

createuser name
dropuser name

為了能初創資料庫系統,新增立的資料庫總是包含一個預定義的使用者. 這個使用者將有固定的 ID 1,並且預設時(除非在運行 initdb 時變更過)他將和 初始化該資料庫集群的使用者有相同的名稱。 通常,這個使用者叫postgres. 為了建立更多使用者,你必須首先以這個初始使用者身份連結.

一個和資料庫的活躍連線只能有一個使用者身份進行。 和特定資料庫連結的使用者名是由初始化連結請求的應用以應用相關的方式宣告的, 比如,psql 程式使用-U命令行選項宣告它代表的進行連結 的使用者.許多應用以目前操作系統的使用者名為預設(這樣的應用包括 createuserpsql)。 這樣我們就可以很方便地維護這兩個使用者集合之間地映射關系。

一個客戶端連結可以用來連結的資料庫使用者集合是由客戶 認証設定決定的,在 Chapter 4 裡面有解釋.(因此,一個客戶端並不局限於以它的操作系統使用者 同名的使用者進行連結,就象你登錄系統的名稱不一定要是你的真實 名稱一樣.)因為使用者地身份決定了一個已連線地客戶端可用的權限, 所以在多使用者環境裡仔細配置這些內容是非常重要的。