PostgreSQL: 環境変数、.pgpass ファイル、パスワードプロンプトを使った psql 実行のスクリプト化
PostgreSQL: パスワード付きの psql 実行をスクリプト化する
このドキュメントでは、PostgreSQL データベースにパスワードを使って接続する psql コマンドをスクリプト化する方法について解説します。
方法
psql コマンドのパスワードを処理する方法はいくつかあります。
環境変数を使う
PGPASSWORD
環境変数にパスワードを設定することで、psql コマンドにパスワードを明示的に渡すことなく接続できます。
export PGPASSWORD="your_password"
psql -U postgres -d my_database
host:port:database:username:password
localhost:*:*:postgres:my_password
psql コマンドにパスワードを埋め込む
パスワードを直接 psql コマンドに埋め込むことができます。ただし、この方法はセキュリティ上推奨されません。
psql -U postgres -d my_database -W -c "SELECT * FROM my_table"
パスワードプロンプトが表示されるので、パスワードを入力して接続できます。
psql -U postgres -d my_database
注意事項
- パスワードを環境変数やファイルに記述する場合は、セキュリティ対策を講じる必要があります。
- パスワードを直接 psql コマンドに埋め込むのは絶対に避けてください。
- スクリプトを実行する前に、psql コマンドがパスワードをどのように処理するかを理解しておくことが重要です。
補足
- 上記の方法以外にも、PostgreSQL の認証方法 (MD5、SCRAM-SHA-256 など) を設定することで、パスワードのセキュリティを強化することができます。
- psql コマンドには、
-h
オプション (ホスト名)、-p
オプション (ポート番号) など、接続情報を指定するためのオプションが多数用意されています。
改善点
- 各方法の説明を簡潔にまとめました。
- 補足情報に日本語の情報へのリンクを追加しました。
環境変数を使う
#!/bin/bash
export PGPASSWORD="your_password"
psql -U postgres -d my_database <<EOF
SELECT * FROM my_table;
EOF
.pgpass ファイルを使う
#!/bin/bash
psql -U postgres -d my_database <<EOF
SELECT * FROM my_table;
EOF
psql コマンドにパスワードを埋め込む
#!/bin/bash
psql -U postgres -d my_database -W -c "SELECT * FROM my_table"
パスワードプロンプトを使う
#!/bin/bash
psql -U postgres -d my_database <<EOF
SELECT * FROM my_table;
EOF
- サンプルコードはあくまでも参考です。
- 実際に使用する場合は、環境に合わせて変更する必要があります。
PostgreSQL に接続するその他の方法
pgAdmin4 などの GUI ツールを使えば、コマンドライン操作に慣れていない人でも簡単に PostgreSQL に接続して操作することができます。
Python や Java などのプログラミング言語を使えば、PostgreSQL に接続してデータの操作やクエリの実行を行うことができます。
Web ブラウザを使う
phpPgAdmin などの Web ブラウザベースのツールを使えば、Web ブラウザから PostgreSQL に接続して操作することができます。
接続方法の選択
- コマンドライン操作に慣れている場合は、psql コマンドを使うのが最も効率的です。
- GUI ツールを使いたい場合は、pgAdmin4 などのツールがおすすめです。
- プログラミング言語を使いたい場合は、Python や Java などの言語がおすすめです。
postgresql psql