SSH トンネル、PgAdmin、ODBC/JDBC ドライバー:リモート PostgreSQL 接続の選択肢

2024-04-14

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 コマンドをリモートサーバー上で実行し、リモートインスタンスに接続できます。

手順:

  1. リモートサーバーに SSH クライアントをインストールします。
  2. 以下のコマンドを使用して、SSH トンネルを作成します。
ssh -L 5432:localhost:5432 remote_user@remote_server

このコマンドは、remote_user ユーザーを使用して remote_server に接続し、ローカルポート 5432 をリモートポート 5432 に転送します。

  1. 以下のコマンドを使用して、psql を使用してリモートインスタンスに接続します。
psql -h localhost -p 5432 -d mydb -U myuser

利点:

  • SSH トンネルを使用して、リモートサーバーへの安全な接続を作成できます。
  • パスワードを ~/.pgpass ファイルに保存する必要はありません。
  • SSH トンネルを使用するには、SSH クライアントをインストールする必要があります。
  • SSH トンネルの作成と使用には、追加の手間がかかります。

PgAdmin は、PostgreSQL データベースを管理するためのグラフィカルツールです。PgAdmin を使用して、リモートにある PostgreSQL インスタンスに接続できます。

  1. PgAdmin をインストールします。
  2. PgAdmin を起動し、新しいサーバー接続を追加します。
  3. サーバー接続の詳細を入力します。
  1. PgAdmin でサーバー接続をダブルクリックして、リモートインスタンスに接続します。
  • グラフィカルインターフェースを使用してリモートインスタンスに接続できます。
  • データベース内のデータを簡単に表示および編集できます。
  • コマンドラインインターフェースを使用するよりも時間がかかる場合があります。

上記以外にも、リモートにある PostgreSQL インスタンスに接続する方法がいくつかあります。

  • Web ブラウザを使用する: PostgreSQL インスタンスが phppgadmin などの Web 管理ツールをインストールしている場合は、Web ブラウザを使用してリモートインスタンスに接続できます。
  • ODBC ドライバーを使用する: ODBC ドライバーを使用して、リモートインスタンスに接続できます。

postgresql psql


標準的なクライアントライブラリを使用したPostgreSQLの埋め込み

PostgreSQLは、C、C++、Java、Pythonなど、さまざまな言語向けの公式クライアントライブラリを提供しています。これらのライブラリを使用すると、アプリケーションからデータベースに接続し、SQLクエリを実行し、結果を処理することができます。...


PostgreSQL: SELECTクエリ結果をまるごと挿入する魔法の構文 INSERT INTO ... (SELECT * ...)

INSERT INTO . .. (SELECT * ...) は、PostgreSQL における強力なデータ挿入構文です。この構文は、SELECT クエリによって取得された結果をまるごと別のテーブルに挿入するために使用されます。構文解説INSERT INTO: データを挿入するテーブルを指定します。...


pgBadgerやLogstash + ElasticsearchでPostgreSQLクエリ履歴を高度分析

PostgreSQLで実行されたクエリ履歴を確認するには、主に以下の3つの方法があります。統計情報ビューを使用するPostgreSQL 8.4以降では、pg_stat_statements拡張モジュールを使用して、実行されたクエリの統計情報を収集できます。この拡張モジュールを有効にすると、pg_stat_statementsビューが作成され、以下の情報を含むクエリ履歴を確認できます。...


PostgreSQLで制約を駆使してテーブルデータを完全管理!変更方法から注意点まで徹底解説

このチュートリアルでは、PostgreSQLで既存のテーブル制約を変更する方法について説明します。制約とは、テーブル内のデータの整合性を保つために定義されるルールです。 主な制約の種類は以下の通りです。NOT NULL: 列に値が入力必須であることを指定します。...


PostgreSQLで共通表式(CTE) を使って結果セットに行番号を割り当てる:読みやすいコード

PostgreSQLでは、窓関数と呼ばれる特殊な関数を使用して、結果セット内の各行に固有の行番号を割り当てることができます。最も一般的に使用される窓関数は ROW_NUMBER() です。ROW_NUMBER() 関数は、OVER 句を指定することで、行番号の割り当て方法を制御できます。OVER 句には、ORDER BY 句を使用して行番号のソート順序を指定できます。...