postgresコマンドの実行に必要な非対話型スクリプトを作成しています。このスクリプトはroot
特権を持つユーザーだけを実行できsudo
、postgresコマンドはpostgres
postgresqlでユーザーとして実行する必要があります。問題は、postgresqlがいつも(私が知っている限り)、対話的にパスワードを求めるメッセージを表示したり(たとえば)、pqsl -U postgres -W
パスワードをまったく許可しないことです(たとえば)psql -U postgres -w
。 mysqlが許可する方法と同様に、コマンドラインからパスワードを渡したいと思いますmysql -u user -p password
。 Postgresでこれを行うにはどうすればよいですか?
答え1
答え2
同じことを行う方法は2つあります。
方法1:
.pgpass
ユーザー(スクリプトを実行しているユーザー)のホームディレクトリにファイルを追加します。
$ cat /home/user/.pgpass
hostname:port:database:user:password
$ chmod 600 /home/user/.pgpass
上記の項目を追加したら、使用するスクリプトにパスワードを追加する必要はありません。すぐに接続されます。
方法2:
シェルスクリプトに次の内容を追加します。ただし、これによりパスワードが公開され、リポジトリにコミットすると問題になります。
export PGPASSWORD=password
答え3
psqlをユーザーpostgresとして実行できる場合、最も有用な解決策はpg_hba.confを変更して、localhost / socketを介して接続するUnixユーザーpostgresがパスワードや外部ファイルなしで認証できるようにすることです。ファイルの挿入 上部に以下を挿入します。
local all postgres peer
この時点では、TBMIはデフォルトです。たぶん、誰かがこのラインを取り除いたとき、自分がよりスマートであるか、より安全であると思ったかもしれません。監視サービスには次のものを使用することもできます。
local zabbix zabbix peer
「zabbix」というユーザー名とデータベースを作成します。