SSH トンネル、PgAdmin、ODBC/JDBC ドライバー:リモート PostgreSQL 接続の選択肢
PostgreSQL: リモートで接続する PostgreSQL インスタンスに psql コマンドを使用する
前提条件
このチュートリアルを完了するには、以下のものが必要です。
- リモートで実行可能な PostgreSQL インスタンス
- クライアントマシンにインストールされた
psql
クライアント
ステップ 1: リモートインスタンスの接続情報を確認する
リモート PostgreSQL インスタンスに接続するには、以下の情報が必要です。
- ホスト名またはIPアドレス: インスタンスが実行されているサーバーの名前またはIPアドレス
- ポート番号: PostgreSQL インスタンスがリスニングしているポート番号。デフォルトは5432
- データベース名: 接続するデータベースの名前
- ユーザー名: PostgreSQL インスタンスにログインするためのユーザー名
- パスワード: ユーザーのパスワード
これらの情報は、通常、リモートインスタンスの管理者から提供されます。
ステップ 2: psql コマンドを使用して接続する
リモートインスタンスの接続情報が揃ったら、以下のコマンドを使用して psql
を使用して接続できます。
psql -h <ホスト名またはIPアドレス> -p <ポート番号> -d <データベース名> -U <ユーザー名>
例:
psql -h my-remote-instance.com -p 5432 -d mydatabase -U myuser
このコマンドを実行すると、パスワードの入力を求められます。パスワードを入力すると、リモートインスタンスに接続され、psql
プロンプトが表示されます。
ステップ 3: PostgreSQL インスタンスで操作を実行する
リモートインスタンスに接続したら、通常の psql
コマンドを使用してデータベースを操作できます。
- データベース内のデータを表示するには、
SELECT
クエリを使用します。
詳細については、psql
のドキュメントを参照してください。
ステップ 4: 接続を切断する
\q
追加オプション
psql
には、リモート接続に役立つ追加オプションがいくつかあります。
-h <ホスト名またはIPアドレス>
: 接続するホスト名またはIPアドレスを指定します。-p <ポート番号>
: 接続するポート番号を指定します。デフォルトは5432-d <データベース名>
: 接続するデータベース名を指定します。-U <ユーザー名>
: ログインに使用するユーザー名を指定します。-W
: パスワードのプロンプトを表示せずに接続します。パスワードは、~/.pgpass
ファイルに保存する必要があります。
このチュートリアルでは、psql
コマンドを使用してリモートにある PostgreSQL インスタンスに接続する方法を説明しました。リモート接続により、どこからでも PostgreSQL インスタンスを管理できます。
PostgreSQL: リモートで接続する PostgreSQL インスタンスに psql コマンドを使用する - サンプルコード
この例では、my-remote-instance.com
ホスト上の 5432
ポートで実行されている mydb
という名前のデータベースに接続します。接続には myuser
ユーザーとパスワード mypassword
が使用されます。
psql -h my-remote-instance.com -p 5432 -d mydb -U myuser -W
パスワードの入力を求められずに接続するには、~/.pgpass ファイルを使用できます。
このファイルには、接続情報が次の形式で保存されます。
host:port:database:username:password
my-remote-instance.com:5432:mydb:myuser:mypassword
~/.pgpass
ファイルを作成するには、次のコマンドを使用します。
touch ~/.pgpass
次に、ファイルを編集して、接続情報を入力します。
vi ~/.pgpass
ファイルを保存して終了するには、:wq
と入力します。
psql
を実行すると、パスワードの入力を求められずにデータベースに接続できます。
psql -h my-remote-instance.com -p 5432 -d mydb -U myuser
注意事項:
~/.pgpass
ファイルのアクセス許可は600
に設定する必要があります。これにより、ファイルにアクセスできるのは、ファイルの所有者のみになります。- パスワードは平文で保存されます。そのため、この方法を使用する場合は、セキュリティ上のリスクを認識する必要があります。
PostgreSQL: リモートで接続する PostgreSQL インスタンスに psql コマンドを使用する - 他の方法
SSH トンネルを使用すると、リモートサーバーへの安全な接続を作成できます。この接続を使用して、psql
コマンドをリモートサーバー上で実行し、リモートインスタンスに接続できます。
手順:
- リモートサーバーに SSH クライアントをインストールします。
- 以下のコマンドを使用して、SSH トンネルを作成します。
ssh -L 5432:localhost:5432 remote_user@remote_server
このコマンドは、remote_user
ユーザーを使用して remote_server
に接続し、ローカルポート 5432
をリモートポート 5432
に転送します。
- 以下のコマンドを使用して、
psql
を使用してリモートインスタンスに接続します。
psql -h localhost -p 5432 -d mydb -U myuser
利点:
- SSH トンネルを使用して、リモートサーバーへの安全な接続を作成できます。
- パスワードを
~/.pgpass
ファイルに保存する必要はありません。
- SSH トンネルを使用するには、SSH クライアントをインストールする必要があります。
- SSH トンネルの作成と使用には、追加の手間がかかります。
PgAdmin は、PostgreSQL データベースを管理するためのグラフィカルツールです。PgAdmin を使用して、リモートにある PostgreSQL インスタンスに接続できます。
- PgAdmin をインストールします。
- PgAdmin を起動し、新しいサーバー接続を追加します。
- サーバー接続の詳細を入力します。
- PgAdmin でサーバー接続をダブルクリックして、リモートインスタンスに接続します。
- グラフィカルインターフェースを使用してリモートインスタンスに接続できます。
- データベース内のデータを簡単に表示および編集できます。
- コマンドラインインターフェースを使用するよりも時間がかかる場合があります。
上記以外にも、リモートにある PostgreSQL インスタンスに接続する方法がいくつかあります。
- Web ブラウザを使用する: PostgreSQL インスタンスが
phppgadmin
などの Web 管理ツールをインストールしている場合は、Web ブラウザを使用してリモートインスタンスに接続できます。 - ODBC ドライバーを使用する: ODBC ドライバーを使用して、リモートインスタンスに接続できます。
postgresql psql