備忘録的プログラミングリファレンス

PostgreSQL のインストール

 Ubuntu における PostgreSQL のインストールからユーザーの設定、ログインについて解説します。

 PostgreSQL のインストールには、サーバーを構築する場合開発環境を構築する場合があります。 開発環境をインストールする場合は、以下の開発用パッケージのインストールから参照してください。

PostgreSQL サーバーのインストール

 以下は、PostgreSQL をサーバーとして運用する場合のインストールの方法です。サーバーとしての運用が目的なら、こちらのインストールを選びます。

 もしも、PostgreSQL データベースを使った API などの開発用のインストールは「開発用パッケージのインストール」を参照してください。 運用が目的なら、開発用パッケージはインストールしないで下さい。サーバーの改編が出来てしまいます。

インストール

 管理者権限の apt コマンドによってインストールします。

$ sudo apt install postgresql

 インストールができたらバージョンを確認してみましょう。

psql -V
...

 psql は PostgrSQL のコマンドです。

 上記以外に PostgreSQL サイトからインストールする方法もありますが、Ubuntu 版とはディレクトリ構成などに違いがあります。開発に利用する場合は、参考にするサイトや資料の違いに注意しましょう。

初期状態でのpostgresユーザーによるログイン

 インストールのみでもデータベースが自動で起動するようになっています。

 PostgreSQL はインストールのみの場合、標準でpostgresが PostgreSQL の管理ユーザ(スーパーユーザー)となっています。
 PostgreSQL をサーバーとして公開するならば、スーパーユーザーをpostgresにしない方がよいでしょう。サーバーの構築段階でスーパーユーザー名は決めておくことをお勧めします。
 ここでは標準状態でのインストールを解説しますので、スーパーユーザーはpostgresで解説します。

ユーザーの確認

 postgresユーザを OS 上にあるかを確認するには以下のようにします。

$ cat /etc/passwd | grep postgres

 postgresユーザーが存在していれば以下のように表示されます。

postgres:x:122:127:PostgreSQL administrator,,,:/var/lib/postgresql:/bin/bash

パスワードの登録

 インストールしただけの状態では、OS上のpostgresユーザにパスワードがないためにログインする際に困るときがあります。以下のようにパスワードを登録します。

$ sudo passwd postgres
[sudo] **** のパスワード:
新しい UNIX パスワードを入力してください:	<決定したパスワード>
新しい UNIX パスワードを再入力してください: <決定したパスワード>
passwd: パスワードは正しく更新されました

postgres ユーザーでログイン

 OS 上の端末でpostgresユーザーに切り替えてみましょう。

$ su - postgres
パスワード: <決定したパスワード>

 次に psql コマンドで PostgreSQL のコマンドラインインターフェイスにログインしてみます。

psql でログイン
$ psql
psql (10.12 (Ubuntu 10.12-0ubuntu0.18.04.1))
Type "help" for help.

postgres=#

 psql コマンドでデータベースを指定しない場合はユーザー名と同じデータベース名に接続されます。 このデータベースはインストール時に自動で作成されたデータベースです。

開発用パッケージのインストール

 PostgreSQL 用の API などの開発には、開発用パッケージとライブラリをインストールする必要があります。

 PostgreSQL をサーバーとして運用することが目的なら開発用パッケージはインストールしないで下さい。サーバーの改編が出来てしまいます。運用が目的なら、上記のサーバーのインストールを参照してください。

 開発用のインストールには Ubuntu や CentOS などのディストリビューションからインストールする方法と、PostgreSQL のサイトからパッケージをダウンロードしインストールする方法があります。
 開発環境をディストリビューションを利用して構築するのなら、PostgreSQL もディストリビューションを利用してインストールすることをお勧めします。
 インストール元がディストリビューションからなのか、PostgreSQL のサイトからなのかの大きな違いは環境設定とディレクトリ構成です。 環境設定やディレクトリ構成の違いによって動作に不具合が出ることがあります。また、参考にしたサイトや資料によっては環境設定やディレクトリ構成に違いがあり、読み替える必要があります。

 開発用にPostgreSQLをインストールするには、postgresql-server-dev-all, libpq-devパッケージも必要です。

 例えばPostgreSQL 10をインストールするためには以下のようにします。

$ sudo apt install postgresql-10 postgresql-server-dev-10 libpq-dev

 開発において、主にpostgres.hとlibpq-fe.hを呼び出します。ubuntu1. 3以降はそれらファイルは別々のディレクトリにあるので注意が必要です。

環境変数の変更方法

 ディストリビューションを利用してインストールしていない場合で環境変数の設定の必要があれば以下のように、.bashrc ファイルに追記します。以下は ver9.3 の場合です。

$ sudo su postgres
$ vim ~/.bashrc
PATH="$PATH":/usr/lib/postgresql/9.3/bin
export POSTGRES_HOME=/usr/lib/postgresql/9.3
export PGDATA=/var/lib/postgresql/9.3/main
export POSTGRES_LIB=$POSTGRES_HOME/lib
export POSTGRES_INCLUDE=/usr/include/postgresql
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH":"$POSTGRES_LIB"

データベース作成とユーザー管理

 以降はデータベースの作成やユーザーの追加編集をすることと思います。

 データベースは仕様ごとに作成します。データベースごとにデータは管理され、データベースをまたいだデータ検索といった操作はできません。
 データベース間でデータをやりとりするにはデータベースの連携が必要になります。データベースを連携すると拡張性を上げることができ、データベースごとのアップデートや保守管理が容易になります。

 データベースごとにスキマー、その中にテーブルを作成します。スキーマはデータベースの中の用途ごとのカタマリで、例えば会計、在庫管理、給与管理などをスキーマーごとに作ることもできます。 その場合は、スキーマーをまたいだ検索といった操作ができます。
 ただしメンテナンスが煩雑になり構成が分かり難くなるという欠点があります。

 データベースの作成などの管理ついては「データベースの管理(確認、作成、削除)」を参照して下さい。

 ユーザーの追加、管理については「PostgreSQLユーザー(ロール)管理」を参照して下さい。