はじめてのPostgreSQL 9.1.5文書 第二十章(2)〜第二十一章

二十章まで書いたやつの続き。というか文章自体は既に書いてあるからただの清書みたいな感じなんだけど。

20.3 ロールのメンバ資格

CREATE ROLEでメンバグループ用のロールを作成する。

> CREATE ROLE name;


メンバグループの追加。

> GRANT group_role TO role1, ...;

メンバグループの削除。

> REVOKE group_role FROM role1, ...;


ロールの継承。OOP的な。

> CREATE ROLE xxx LOGIN INHERIT;

ロールの非継承。

> CREATE ROLE yyy NOINHERIT;
> CREATE ROLE zzz NOINHERIT;


ロールを変更する?

> SET ROLE xxx;

変更されたロールを元に戻す。

> RESET ROLE xxx;


以下でロールを削除する。

> DROP ROLE name;


なんかこの辺、理解が微妙かも。

21.1 概要

データベースを確認するには

> SELECT * FROM pg_database;

もしくは

> \l

を実行する。


データベースの作成とともに、所有者を設定するときは

> CREATE DATABASE dbname OWNER rolename;

もしくは

$ createdb -O rolename dbname

を実行する。


CREATE DATABASEは既存のデータベースをコピーする。
デフォルトではtemplate1という名前の標準のシステムデータベースをコピーする。
なので、template1にオブジェクトを追加した後にCREATE DATABASEを実行するとその変更も新しいデータベースにコピーされる。


template0という名前の二次的な標準システムデータベースもあり、template1の初期内容と同じデータが含まれている。
template1でなくtemplate0をテンプレートとしてデータベースを作成する場合は

> CREATE DATABASE dbname TEMPLATE template0;

もしくは

$ createdb -T template0 dbname

を実行する。


データベースの削除は

> DROP DATABASE name;

削除しているデータベースに接続している場合はDROP DATABASEは実行できないので、template1データベースに接続するしかない。


シェルからの場合はこちら。

$ dropdb dbname
> CREATE TABLESPACE
> DROP TABLESPACE
> SELECT * FROM pg_tablespace;
> \db

頑張って読んだけどよくわからない……


なんか大分いい加減な感じになった……
でもなんとか本当に基本的なところはわかった気がするから、他の本とかいろいろ参考にしながら知識を得て行きたいかなーと。