私的Q&Aメモ

データベースを使用するためにインストールするものは?

# yum install postgresql postgresql-server

インストールしたらユーザpostgresが勝手に作成されたけど…

postgresqlのスーパーユーザpostgresが勝手に作成されます。
でも、ユーザとしてパスワードが作成されていないので、作成しておきましょう。

# passwd postgres

それと、データベース用のユーザpostgresにもパスワードを設定しておきましょ。

postgres=# ALTER ROLE postgres with password 'hogehogehoge';

まず、やることは?

データベースクラスタを初期化しましょう。

postgres=# initdb -E UTF8
  • Eでデータベースのデフォルトエンコードを指定する。

※注意。
初期化をする前にpostgresqlデーモンが起動している場合は
停止すること。起動していると変な挙動になる。

データベースクラスタってナンスカ?

データベースのデータ本体や設定ファイルを保存する領域のこと。
自分の環境ではデフォルトで/var/lib/pgsql/data

次は?

データベースデーモンを起動しよう。

# /etc/rc.d/init.d/postgresql start

これで、データベースデーモンが起動したよ〜。

データベースユーザを作成する

-d 当該ユーザに対し、データベース作成を許可
-D 当該ユーザに対し、データベース作成を禁止
-E データベースに格納するユーザのパスワードを暗号化
-l 当該ユーザに対しログインを許可
-L 当該ユーザに対しログインを禁止
-P パスワードプロンプトを表示
-r 当該ユーザに対し、新しいロールの作成を許可
-R 当該ユーザに対し、新しいロールの作成を禁止
-s 当該ユーザをスーバーユーザとする
-S 当該ユーザをスーパーユーザにしない
postgres# createuser -DElPRS hoge_user

※ユーザを作成できるのはスーパーユーザとCREATEROLE権限を持つユーザのみ。

データベースユーザを削除する

postgres# dropuser hoge_user

データベースのユーザ一覧を知りたい。

postgres=# SELECT * FROM pg_shadow;

とか、

postgres=# \du

データベースの作成はどうやるの?

postgres# createdb -O hoge_user hoge_db

データベースhoge_dbを作成する。
所有者をhoge_userに指定する。

データベースの削除はどうするか?

postgres# dropdb hoge_db

スキーマの作成はどうやるの?

postgres=# CREATE SCHEMA my_schema;

スキーマmy_schemaがデータベースpostgesに作成される。

スキーマの削除は?

postgres=# DROP SCHEMA my_schema;

スキーマのリストを知りたい

postgres=# \dn

テーブルを作成するには?

postgres=# CREATE TABLE my_schema.my_table (id integer,data text);

テーブルを削除したい

postgres=# DROP TABLE my_schema.my_table;