Ubuntu 12.04 に PostgreSQL 9.1 をインストールした後、「postgres」スーパーユーザー アカウントのパスワードを設定しました。ログイン時にすべてのユーザーがパスワードを入力する必要があるようにします。これが、pg_hba.conf を次のように構成した理由です。
#Database administrative login by Unix domain socket
local all postgres md5
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all md5
これらの変更を行った後、postgresql を再起動しました。これを行うpsql -U testuser
とパスワードを求められますが、「postgres」アカウントでログインすると、psql -U postgres
パスワードプロンプトが表示されず、ログインします。パスワードプロンプトを強制するとpsql -U postgres -W
、正しいパスワードを入力してログインできますまたは何も入力しないでください。間違ったパスワードを入力すると拒否されます。
なぜこれが起こっているのか誰か説明してもらえますか?
関連するメモ: 「postgres」ユーザーの認証方法として ident を使用する例を多く見ます。「postgres」ユーザーになるには、マシンのルート パスワードが必要であると主張しています。理由は、攻撃者が root アクセス権を取得した場合、とにかく完了したということだと思います。ただし、ルートパスワードとは異なるパスワードでログインしたいと思います。私は、物事ごとに異なるパスワードを使用することを好みます。これは合理的ですか?
の出力grep '^[^#]' pg_hba.conf
local all postgres md5
local all all md5
host all all 127.0.0.1/32 md5