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

PostgreSQL のインストール

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

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

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

 以下は、PostgreSQL をサーバーとして運用する場合のインストールです。通常はこちらのインストールを選びます。
 開発用パッケージのインストールは「開発用パッケージのインストール」を参照してください。 運用が目的なら、開発用パッケージはインストールしないで下さい。改編などが出来てしまいます。

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

$ sudo apt install postgresql

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

psql -V
...

 psqlはPostgrSQLのコマンドです。

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

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

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

 PostgreSQLはインストールのみの場合、標準で「postgres」がpostgreSQLの管理ユーザとなっています。開発のように外部からのアクセスがない場合でなければ、スーパーユーザーを「postgres」から変更しておいた方がよいでしょう。

ユーザーの確認

 「postgres」ユーザを確認するには以下のようにします。

$ cat /etc/passwd | grep postgres

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

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

パスワードの登録

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

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

postgresユーザーでログイン

 postgresユーザーでPostgreSQLのコマンドラインにログインしてみましょう。

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

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

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

 psqlコマンドでデータベースを指定しない場合はユーザー名と同じデータベース名に接続します。

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

 上記は、データベースサーバーとして PostgreSQL をインストールする方法です。 PostgreSQL 用の API などの開発には、開発用パッケージとライブラリをインストールする必要があります。

 インストールにはUbuntuやCentOSなどのディストリビューションからインストールする方法と、PostgreSQLのサイトからパッケージをダウンロードしインストールする方法があります。
 開発環境をディストリビューションを利用して構築するのなら、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の場合です。
 環境変数の設定は、開発環境をディストリビューションで統一していれば必要がない場合が多いです。PostgreSQLサイトからパッケージをダウンロードをした場合は環境変数の設定は必要になるかもしれません。

$ 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ユーザー(ロール)管理」を参照して下さい。