PostgreSQL のインストール
Ubuntu における PostgreSQL のインストールからユーザーの設定、ログインについて解説します。
PostgreSQL のインストールには、サーバーを構築する場合
と開発環境を構築する場合
があります。
開発環境をインストールする場合は、以下の開発用パッケージのインストール
から参照してください。
PostgreSQL サーバーのインストール
PostgreSQL をサーバーとして運用する場合のインストールの方法です。サーバーとしての運用が目的なら、こちらのインストールを選びます。
もしも、PostgreSQL データベースを使った API などの開発用のインストールは「開発用パッケージのインストール」を参照してください。 サーバーの運用が目的なら、開発用パッケージはインストールしないで下さい。サーバーの改編が出来てしまいます。
インストール
管理者権限の apt コマンドによってインストールします。
$ sudo apt install postgresql
インストールができたらバージョンを確認してみましょう。
psql -V ...
psql は PostgrSQL のコマンドです。
上記以外に PostgreSQL サイトからインストールする方法もありますが、Ubuntu 版といったディストリビューションとはディレクトリ構成などに違いがあります。
ディストリビューションで用意されたパッケージを利用したほうが親和性が高いです。特に開発に利用する場合は、参考にするサイトや資料の内容がソースからのインストールなにか、特定のディストリビューションのパッケージからのインストールなのかによって違いがあるので注意が必要です。
起動設定
パッケージインストールによる PostgreSQL はインストールするだけでサーバーとして自動で起動するようになっています。
起動しているかを確認するには systemctl コマンドのオプション status を使用します。
$ systemctl status postgresql ● postgresql.service - PostgreSQL RDBMS Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor pr> Active: active (exited) since Wed 2023-09-13 07:44:13 JST; 13min ago Process: 1413 ExecStart=/bin/true (code=exited, status=0/SUCCESS) Main PID: 1413 (code=exited, status=0/SUCCESS) CPU: 1ms 9月 13 07:44:13 user-PC systemd[1]: Starting PostgreSQL RDBMS... 9月 13 07:44:13 user-PC systemd[1]: Finished PostgreSQL RDBMS.
上記のように、PostgreSQL サーバーがactive
になっていればログインが可能になります。
MySQL を起動するためには systemctl コマンドのオプション start を使用します。
$ sudo systemctl start postgresql
再起動は restart を使用します。
$ sudo systemctl restart postgresql
古い MySQL の起動と停止
以下は古い方法によるものだと思います。場合によってはこの方法では起動できないかもしれません。
初期状態での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 コマンドでデータベースを指定しない場合はユーザー名と同じデータベース名に接続されます。 このデータベースはインストール時に自動で作成されたデータベースです。
開発用パッケージのインストール
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"
データベース作成とユーザー管理
以降はデータベースの作成やユーザーの管理をすることと思います。
PostgrSQL では、データベースをまたいだデータ検索といった操作はできません。
データベースごとにスキマー、その中にテーブルを作成します。スキーマはデータベースの中の用途ごとのカタマリで、例えば会計、在庫管理、給与管理などをスキーマーごとに作ることもできます。
その場合は、スキーマーをまたいだ検索といった操作ができます。
ただしスキーマーには、メンテナンスが煩雑になり構成が分かり難くなるという欠点はあります。
データベースの作成などの管理ついては「データベースの管理(確認、作成、削除)」を参照して下さい。
ユーザーの追加、管理については「PostgreSQLユーザー(ロール)管理」を参照して下さい。