ウェブサイト検索

FreeBSD 11 に PostgreSQL と pgAdmin をインストールする方法


このページでは

  1. PostgreSQL のインストール
  2. リモート接続とパスワード認証を有効にする
  3. パスワードの変更とユーザーの作成
  4. pgAdmin のインストール
  5. 結論

PostgreSQL または略して Postgres は、オープン ソースのオブジェクト リレーショナル データベース管理システム (ORDBMS) です。これは 1996 年から活発に開発されており、最高の ORDMS の 1 つに進化しました。オブジェクト指向データベース モデルのサポートとともに、RDBMS のすべての機能をサポートします。オブジェクト、クラス、および継承は、データベース スキーマとクエリ言語で直接サポートされています。 PostgreSQL は、小規模な Web サイトから大規模なクラウド ベースのアプリケーションやデータ ウェアハウジングまで、さまざまなアプリケーションのデータベースをホストするために使用できます。

このチュートリアルでは、PostgreSQL と pgAdmin を FreeBSD 11 サーバーにインストールする方法を学習します。

前提条件

  • 最小限の FreeBSD 11 サーバー。 8 GB RAM を推奨。
  • root 権限を持つ Sudo ユーザー。

PostgreSQL のインストール

まず、サーバーのリポジトリ情報を更新します。

sudo pkg update

pkg は、FreeBSD 用の組み込みパッケージ マネージャーです。次に、PostgreSQL サーバーとクライアントのパッケージをダウンロードしてインストールします。

sudo pkg install postgresql96-server postgresql96-client

y を押してインストールを続行します。 pkg は、指定されたパッケージと必要な依存関係を見つけてインストールします。

インストールが完了したら、起動時に PostgreSQL が自動的に起動するようにします。

sudo sysrc postgresql_enable=yes

または、ブート時に PostgreSQL を開始するには、好きなテキスト エディタを使用して /etc/rc.conf の最後に postgresql_enable=\YES\ を追加することもできます。

次のコマンドを使用してデータベースを初期化します。

sudo service postgresql initdb

initdb は、単一のサーバー インスタンスによって管理されるデータベースのコレクションである新しい postgresql データベース クラスターを作成します。

次のコマンドを使用して、PostgreSQL データベース サーバーを起動できるようになりました。

sudo service postgresql start

PostgreSQL データベース サーバーがインストールされました。

リモート接続とパスワード認証を有効にする

データベース サーバーにリモートでアクセスする場合は、PostgreSQL の構成をいくつか変更する必要があります。このチュートリアルでは、nano エディターを使用します。 nano がインストールされていない場合は、次を実行できます。

sudo pkg install nano

nano エディターを使用して構成ファイルを開きます。

sudo nano /var/db/postgres/data96/postgresql.conf

下にスクロールして、以下に示す行を見つけます。 listen_addresses のコメントを外し、その値を localhost から * に変更します。デフォルトのポートを 5432 から任意の値に変更することもできます。

#------------------------------------------------------------------------------
# CONNECTIONS AND AUTHENTICATION
#------------------------------------------------------------------------------

# - Connection Settings -

listen_addresses = '*'         # what IP address(es) to listen on;
                                        # comma-separated list of addresses;
                                        # defaults to 'localhost'; use '*' for all
                                        # (change requires restart)
#port = 5432                            # (change requires restart)
max_connections = 100                   # (change requires restart)
#superuser_reserved_connections = 3     # (change requires restart)
#unix_socket_directories = '/tmp'       # comma-separated list of directories

デフォルトでは、PostgreSQL は、すでに PostgreSQL ユーザーとしてログインしているユーザーを認証することなく、すべてのユーザーが psql シェルに接続することを許可します。データベースが公開されている場合は、認証方法をより安全なものに変更する必要があります。認証に暗号化されたパスワードを使用する md5 認証方式を使用できます。さらに、認証を許可する IP アドレスを指定することもできます。

お気に入りのテキスト エディタを使用して pg_hba.conf ファイルを開きます。

sudo nano /var/db/postgres/data96/pg_hba.conf

ホスト型接続の認証方式を trust から md5 に変更します。さらに、データベースにアクセスするクライアント マシンのアドレスを追加します。すべてのクライアントが md5 ベースの認証を使用できるようにするには、アドレスとして 0.0.0.0/0 を使用します。

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     trust
# IPv4 local connections:
host    all             all             0.0.0.0/0               md5
# IPv6 local connections:
host    all             all             ::1/128                 md5

上記の変更を有効にするには、PostgreSQL サーバーを再起動する必要があります。

sudo service postgresql restart

パスワードの変更とユーザーの作成

デフォルトでは、PostgreSQL はユーザー postgres とグループ postgres を作成して、PostgreSQL インスタンスを維持します。 postgres ユーザーのパスワードを設定するには、次のコマンドを実行します。

sudo passwd postgres

パスワードを変更したら、postgres ユーザーとしてログインします。

su - postgres

次のコマンドを使用して PostgreSQL シェルに入ることができるようになりました。

psql

シェルが PostgreSQL シェルに変更されていることがわかります。

psql (9.6.3)
Type "help" for help.

postgres=#

このシェルから SQL クエリを実行できるようになりました。 PostgreSQL シェルを終了するには、\q または \quit と入力します。

次のように入力して、対話的に新しいロールを作成できます。

createuser --interactive

スクリプトは、ユーザー名とユーザーがスーパーユーザーかどうかを入力するよう求めます。

$ createuser --interactive
Enter name of role to add: new_user
Shall the new role be a superuser? (y/n) n
Shall the new role be allowed to create databases? (y/n) y
Shall the new role be allowed to create more new roles? (y/n) y

または、次を実行できます。

createuser -sdrP new_user

パラメータの意味は次のとおりです。

  • s: このユーザーはスーパーユーザーになります。
  • d: このユーザーは新しいデータベースを作成できます。
  • r: このユーザーは新しい役割を作成できます。
  • P: このロールにパスワードを割り当てます。

上記のコマンドは、new_user のパスワードも要求します。

新しいデータベースを作成するには、次のコマンドを実行できます。

createdb new_db

psql コマンドを使用して PostgreSQL シェルに切り替えます。ユーザーのパスワードがない場合は、新しく作成したアカウントのパスワードを指定します。

ALTER USER new_user WITH ENCRYPTED PASSWORD 'password';

次のクエリを実行して、新しく作成したユーザーにデータベースのすべての権限を付与します。

GRANT ALL PRIVILEGES ON DATABASE new_db TO new_user;

\q を実行してエディタを終了します。

pgAdmin のインストール

pgAdmin は、PostgreSQL データベース サーバーを管理するための最も一般的なオープン ソース アプリケーションです。 pgAdmin は、データベースを簡単に管理するための機能豊富なグラフィカル ユーザー インターフェイスを提供します。 Python と Javascript/jQuery で書かれています。 Linux、Windows、Unix などの複数の環境で利用でき、デスクトップおよびサーバー モードで利用できます。

このチュートリアルでは、PostgreSQl をインストールした同じサーバーにサーバー モードで pgAdmin をインストールします。

pip は Python パッケージのパッケージ マネージャーです。 Python パッケージと依存関係のインストールと管理に使用されます。 postgres ユーザーとしてログインしている場合は、sudo 権限を持つ通常のユーザーに切り替える必要があります。

su - sudo_user

システムに pip をインストールするには、次を実行します。

sudo python -m ensurepip

分離された Python 環境を作成するには、virtualenv を使用することをお勧めします。 Virtualenv は、グローバルまたは別の仮想環境でライブラリをサポートしない独自の Python インストールで環境を作成します。次のコマンドを実行して Virtualenv をインストールします。

sudo pkg install py27-virtualenv

次のコマンドを実行して、pgAdmin の仮想環境を作成します。

virtualenv pgadmin4

次のように入力して、仮想環境をアクティブにします。

. pgadmin4/bin/activate

シェルが (pgadmin4) $に変更されていることがわかります。

次のように入力して、いくつかの Python 依存関係をインストールします。

sudo pip install cryptography pyopenssl ndg-httpsclient pyasn1

cryptography パッケージは暗号化ツールを提供します。pyopenssl は OpenSSL ライブラリの Python ラッパー モジュールです。 ndg-httpsclient は pyopenssl を使用して強化された HTTPS サポートを提供し、pyasn1 は ASN.1 の Python 実装です。これらのパッケージは、pgAdmin が機能するために必要です。

pgAdmin4 には SQLite パッケージも必要です。 SQLite は、SQL をサポートするデータベース管理システムでもあります。別のサーバーを必要とする代わりに、SQLite はディスク上のフラット ファイルにデータを格納します。次のように入力して、Python SQLite3 パッケージをインストールします。

sudo pkg install py27-sqlite3

次のように入力して、pgAdmin の Python wheel パッケージをダウンロードします。

wget --no-check-certificate https://ftp.postgresql.org/pub/pgadmin/pgadmin4/v1.5/pip/pgadmin4-1.5-py2.py3-none-any.whl

アプリケーションの最新バージョンへのリンクは、pgAdmin ダウンロード ページでいつでも確認できます。

次を実行してパッケージをインストールします。

pip install pgadmin4-1.5-py2.py3-none-any.whl

以下を使用してアプリケーションを実行できるようになりました。

python ./pgadmin4/lib/python2.7/site-packages/pgadmin4/pgAdmin4.py

上記のコマンドを最初に実行すると、最初の pgAdmin ユーザーを作成するために、メール アドレスとパスワードが要求されます。

(pgadmin4) $ python ./pgadmin4/lib/python2.7/site-packages/pgadmin4/pgAdmin4.py
NOTE: Configuring authentication for SERVER mode.

Enter the email address and password to use for the initial pgAdmin user account:

Email address: your_email
Password: your_new_password
Retype password:
Starting pgAdmin 4. Please navigate to http://localhost:5050 in your browser.

上記のコマンドは、ポート 5050 でサーバーを起動し、localhost のみをリッスンします。ネットワークの外部からサーバーにアクセスするには、構成を変更する必要があります。 pgAdmin 構成ファイルをコピーします。

sudo cp ./pgadmin4/lib/python2.7/site-packages/pgadmin4/config.py ./pgadmin4/lib/python2.7/site-packages/pgadmin4/config_local.py

お気に入りのエディターを使用して、構成ファイルのローカル コピーを編集します。

sudo nano ./pgadmin4/lib/python2.7/site-packages/pgadmin4/config_local.py

デフォルトのサーバー値を localhost から 0.0.0.0 に変更します。必要に応じて、アプリケーションがリッスンしているポートを変更することもできます。

DEFAULT_SERVER = '0.0.0.0'

# The default port on which the app server will listen if not set in the
# environment by the runtime
DEFAULT_SERVER_PORT = 5050

次のように入力して、サーバーを再起動します。

python ./pgadmin4/lib/python2.7/site-packages/pgadmin4/pgAdmin4.py

これで、http://your_server_IP:5050 で pgAdmin インターフェースにアクセスできるようになります。

結論

これで、サーバーに PostgreSQL と pgAdmin がインストールされているはずです。 pgAdmin を使用して、PostgreSQL サーバー上のデータベースを管理できるようになりました。

関連記事: