ぱそくま ろご
サーバー > PostgreSQL > PostgreSQLのセットアップ

PostgreSQLのセットアップ

PostgreSQLのセットアップ

PostgreSQLとはのページでPostgreSQLのインストールをしましたが、このままでは使えません。 なぜなら、PostgreSQLはインストール時にDBの保存場所を決めたり、DBの設定ファイルがないためです。 よって、それらを行うセットアップ作業が必要になります。セットアップの手順は以下のとおりです。

  • まずは、DBの保存場所のディレクトリをrootで作成。
  • 次に、そのディレクトリの所有権をpostgresに変更。
  • 最後に、ユーザー:postgresでinitdbを実行。

厳密にはinitdbを実行するユーザーは、サーバプロセスの所有者であれば誰でも構いません。デフォルトではpostgresなので、このままで。



PostgreSQLの初回セットアップ

[paso ~] su -
パスワード:
[su ~] mkdir -p /var/lib/pgsql/data 
[su ~] chown -R postgres:postgres /var/lib/pgsql/data 
[su ~] sudo -u postgres initdb /var/lib/pgsql/data 
could not change directory to "/root"
The files belonging to this database system will be owned by user "postgres".
This user must also own the server process.

The database cluster will be initialized with locale "ja_JP.UTF-8".
The default database encoding has accordingly been set to "UTF8".
initdb: could not find suitable text search configuration for locale "ja_JP.UTF-8"
.
.
.
Success. You can now start the database server using:

    postgres -D /var/lib/postgres
or
    pg_ctl -D /var/lib/postgres -l logfile start

これで、セットアップが終了です。後は起動するだけです。 上記のinitdbが成功すると表示されるメッセージの用にpg_ctlコマンドを入力して、起動できますが、サービスとして動かしたいので、systemctlを使います。

PostgreSQLをサービスとして動かす

# まずは現状を確認
[paso ~] sudo systemctl status postgresql.service 
● postgresql.service - PostgreSQL database server
   Loaded: loaded (/usr/lib/systemd/system/postgresql.service; disabled; vendor preset: disabled)
   Active: inactive (dead)
[paso ~] more /usr/lib/systemd/system/postgresql.service 
# It's not recommended to modify this file in-place, because it will be
# overwritten during package upgrades.  If you want to customize, the
.
.
# userがinitdbを実行したユーザーと同じことを確認。
User=postgres
Group=postgres
.
.
# PGDATAがinitdbで指定したディレクトリと同じかを確認。
Environment=PGDATA=/var/lib/pgsql/data
.
.
[paso ~] sudo systemctl enable postgresql.service 
Created symlink from /etc/systemd/system/multi-user.target.wants/postgresql.service to /usr/lib/systemd/system/postgresql.service.
[paso ~] sudo systemctl start postgresql.service 

これでセットアップが終了です。 なお、セットアップ終了後には以下のDBオブジェクト(ユーザーやテーブルなどDBMSが管理するものをまとめてオブジェクトと呼びます。)が作成されています。

名前 種類 概要
postgres ユーザー 初期の接続ユーザーです。
postgres DB
template0 DB template1のオリジナルです。これは絶対に変更しないように。
template1 DB 新しいDBを作成するときに、これが複製されます。よって、template1にテーブルを作った後に、CREATE DATABASEを行うとそのテーブルが作成されます。 色々とやり過ぎてわけがわからなくなった時は、template0からこのテーブルを作成してください。

postgresをログイン不可にする

postgreSQLのセットアップを行うとLinuxユーザー:postgresがログイン可能なユーザーとして作成されます。 よって、これを無効にします。

例:postgresはログイン不可にする

[paso ~] sudo vipw 
# nologinに変更。
.
.
.
postgres:x:26:26:PostgreSQL Server:/var/lib/pgsql:/sbin/nologin