PostgreSQL リファレンス
PostgreSQLは、リレーショナル(関係)データベース管理システム (RDBMS:relational database management system) です。
SQLを使用してデータベースおよびテーブルなどを作成しデータを記録することができます。デーモン機能を使ってデータベースサーバーとすることも、単独でデータベースとしても利用できます。
PostgreSQL のインストール
ここでは Ubuntu における PostgreSQL のインストールからユーザーの設定、PostgreSQL へのログインについて簡単に解説します。
インストールには Ubuntu や CentOS などのディストリビューションからインストールする方法と、PostgreSQL のサイトからソースをダウンロードしインストールする方法があります。
開発環境をディストリビューションを利用して構築するのなら、PostgreSQL もディストリビューションを利用してインストールすることをお勧めします。
PostgreSQLのインストール
管理者権限で、aptによってインストールします。
$ sudo apt install postgresql
インストールしただけの状態で公のサーバーとして利用するなら問題があります。スーパーユーザーの設定、アクセスログの記録などのセキュリティー設定や記録ディレクトリの設定などが必要になります。
初期のスーパーユーザーはpostgres
になっています。さらにパスワードを設定しなければなりません。
詳しくは初期状態での
を参照して下さい。postgres
ユーザーによるログイン
PostgreSQLの開発環境のインストール
もし開発環境を構築する必要がある場合には、上記の方法では開発用パッケージは含まれていません。PostgreSQLを使って開発を行うにはpostgresql-server-dev-all, libpq-devパッケージもインストールする必要があります。
$ sudo apt install postgresql-10 postgresql-server-dev-10 libpq-dev
詳しくはPostgreSQLのインストールについてを参照してください。
パッケージインストールによる MySQL はインストールするだけでサーバーとして自動で起動するようになっています。
起動しているかを確認するには 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
になっていればログインが可能になります。
PostgreSQL を起動するためには systemctl コマンドのオプション start を使用します。
$ sudo systemctl start postgresql
サーバーの起動、再起動に関しては起動設定
を参照してください。
PostgreSQLの操作( psql )
psql は端末から利用できる PostgreSQL 用のインターフェイスです。
OS の端末から psql コマンド
でPostgreSQLのコマンドラインインターフェイスにログインします。
$ psql psql (10.12 (Ubuntu 10.12-0ubuntu0.18.04.1)) Type "help" for help. ...
psql コマンドでデータベース名を指定しない場合はユーザー名と同じデータベース名に接続されます。
詳しくはpsql
を参照して下さい。
初期状態ではpostgres
で PostgreSQL のコマンドラインインターフェイスにログインしてみると思います。
しかし、初期状態のpostgres
ユーザーは Ubuntu においてはパスワードが設定されていません。
詳しくは初期状態での
を参照して下さい。postgres
ユーザーによるログイン
PostgreSQL からログアウトする場合は以下のコマンドです。
=# \q
ユーザー(ロール)の管理
PostgreSQLでは、ユーザーはロールとして管理します。データベースへのログインやデータの編集をする権限をロールで管理します。
PostgreSQLへのログインやデータの編集をする権限はユーザーごとに管理するのではなく、ロールごとに管理します。ロールにロールを登録することでグループとして管理することもできます。
ロールは PostgreSQL サーバーで一括して管理されます。データベースごとに管理ができないので注意してください。
ロール作成と設定は以下の手順で行います。
データベース(テーブルなどを含む) ↓ ロールの作成 ロール名 ↓ ロールの設定 データベース作成許可、ロールの追加許可、PostgreSQLへのログイン、パスワード設定 ↓ データベースやテーブルなどにロールを設定
ロールの管理はスーパーユーザーかロールの追加権限のあるユーザーで行います。
初期状態では「postgres」ユーザーがスーパーユーザーです。
(「postgres」というユーザー名は知られている名称ですので公のサーバーでの使用は好ましくありません。)
ロールの一覧
psqlにログインし、\duコマンドを実行します。
$ psql ... =# \du
テーブルごとのロール設定
テーブルごとのロールの設定を確認することができます。\dpコマンドでテーブルを指定します。
=# \dp table_name
詳しくは「PostgreSQLユーザー(ロール)管理」を参照してください。
外部からPostgreSQLのデータ操作をするには、PostgreSQLへのログイン認証、ロールの設定、テーブルごとのロール設定が必要になります。
ログイン認証、ロールの設定、テーブルごとの設定については「ログイン認証とロールの設定」を参照して下さい。
データベースの管理(確認、作成、接続、削除)
データベースの管理としては、既存データベースの一覧で確認、データベースの作成、削除、オーナー管理、ディレクトリ管理があります。ここでは簡単に説明します。
詳しくは、データベースの管理(一覧、作成、接続、削除)を参照して下さい。
データベースの一覧確認
$ psql -l
データベースの作成
まず最初にデータを統括するためのデータベースを作成しなければなりません。データベースにデータを収めるためのテーブルやビュー、トリガといったスクリプトなどが入ります。
# CREATE DATABASE new_database OWNER owner_name;
ログイン可能なユーザーを追加し、そのユーザーでpsql
コマンドを実行するとデータベースがないというエラーが返ってくることがあります。
そのような場合は、ユーザー名のデータベースを作ります。
# CREATE DATABASE user_name OWNER user_name;
詳しくは「データベースの管理(一覧、作成、接続、削除)」を参照してください。
SQLファイルの読み込み
SQLファイルを、PostgreSQLのコマンドラインインターフェイスから読み込み、実行することができます。
database=> \i DataBase/sql_file.sql
読み込むsqlファイルはカレントディレクトリからファイル名で辿ります。読み込み先のデータベース名は確認するようにします。
詳しくはSQLファイルの読み込みと実行
を参照してください。
PostgreSQLの自動起動(デーモンプロセス設定)
Ubuntu のパッケージから PostgreSQL をインストールしたら、標準ではコンピュータの起動時に PostgreSQL も起動します。
もしも PostgreSQL を自動で起動しないように設定するには、 PostgreSQL の自動起動(デーモンプロセス設定)
を参照してください。
データのエクスポートとインポート
psqlコマンドプロントで利用する\COPYコマンドを使う方法があります。
\COPYコマンドによってPostgreSQLデータベースのテーブルレコードの出力と取り込みをすることができます。
詳しくはデータのエクスポートとインポートについてを参照してください。
その他
PostgreSQL を運用する上での Tips です。
- 日本語のソート
- 日本語をソートすると上手くいかない場合があります。多くの場合、LC_COLLATE の設定が英語になっています。その場合のソートの文字列の指定方法などについてです。