質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Q&A

解決済

2回答

19574閲覧

postgresユーザーでpsqlコマンドが成功しません

inashichi

総合スコア39

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

0グッド

0クリップ

投稿2017/05/18 01:14

編集2017/05/18 01:16

###前提・実現したいこと
postgresqlを利用できるようにしたいです。
postgresユーザーにスイッチして psql コマンドを実施するとIdent認証に失敗します。
pg_hba.conf を見ても特に問題はないと思うのですが、なぜIdent認証に失敗するのでしょうか。
また、 /root ディレクトリを変更しようとして失敗しているメッセージも出ていますが、 /root 配下に参照するようなファイルはないはずなのに、と疑問を抱えています。この点は postgres ユーザにスイッチする時に - をつければ回避できますが、何か関係しているのでしょうか。

###発生している問題・エラーメッセージ

[root@RHEL7 ~]# su postgres bash-4.2$ psql could not change directory to "/root": 許可がありません psql: FATAL: ユーザ"postgres"のIdent認証に失敗しました

###試したこと
/var/lib/pgsql/9.4/data/pg_hba.conf でIPv4のMETHOD欄が ident になっていることを確認しました(デフォルトのままです)。

# TYPE DATABASE USER ADDRESS METHOD # "local" is for Unix domain socket connections only local all all peer # IPv4 local connections: host all all 127.0.0.1/32 ident # IPv6 local connections: host all all ::1/128 ident # Allow replication connections from localhost, by a user with the # replication privilege. #local replication postgres peer #host replication postgres 127.0.0.1/32 ident #host replication postgres ::1/128 ident

###補足情報(言語/FW/ツール等のバージョンなど)
OSはRHEL7.2、postgresは9.4.11です。
OSインストール時のサービスでpostgres9.2の導入があり、入れていました。
その後postgres9.2を yum remove postgresql で削除し、postgres9.4.11をインストールしました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

# IPv4 local connections: host all all 127.0.0.1/32 ident

# IPv4 local connections: host all all 127.0.0.1/32 trust

のようにしてpostgresを再起動すれば強制的に接続することができます。

ただし今生きているpostgresがちゃんと9.4を見ているかの確認はしてください。

投稿2017/05/18 05:06

lazhuward

総合スコア1294

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

inashichi

2017/05/22 00:18 編集

試してみたところ、接続できました。 psqlコマンドで9.4であることも確認できました。 ident認証で失敗するということは、postgres側の認識に「postgres」ユーザがないということで、だからpg_hba.conf のMethod列をtrustにすることでpostgresの把握するユーザにかかわらず接続可能にし、解決できたと考えています。 「なぜpostgresユーザを把握していないのか」はわかりませんが、接続はできたので解決とさせていただきます。 ご回答いただきありがとうございました。
inashichi

2017/05/23 00:28

原因不明のまま解決しても次も同じ方法で解決できるとは限らないので、 おっしゃる通りident認証を通す方法を見つけるべきだと思います。最優先というわけにはいきませんが… 解決法が分かりましたらこちらに追記しようと思います。
guest

0

psqlしたら could not change directory to "/home/development": 許可がありません - MasKのpermission denied.
could not change directory to ”/root” - おはようバッファロー

su - postgres
で完全にpostgresユーザーにログインしてから。

su と su - の違い - WEB開発初心者の成長記録

ハイフンなしだと一部の環境変数などが適切に切り替わらないので動作に支障があるのではないかと。

投稿2017/05/18 01:16

編集2017/05/18 01:20
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

inashichi

2017/05/18 01:20

ありがとうございます。 su postgres だけでなく、ご紹介いただいた su - postgres も試してみましたが、 「could not change directory to "/root": 許可がありません」 のメッセージが表示されなくなるだけでした。 ネットで調べると紹介いただいた方法で解決できるようなのですが、 事前に別バージョンのpostgresqlが入っていたことが悪影響しているのでしょうか・・・ (アンインストールに問題があったなど)。
退会済みユーザー

退会済みユーザー

2017/05/18 01:24 編集

環境変数やpostgresqlまわりのプログラムがPATHのどの位置にあるかなど、 点検してみてください。 (金のpsqlか銀のpsqlか。)
inashichi

2017/05/22 00:13

お返事が遅れてしまい、すみません。 先週環境変数を確認しましたが、特に問題になりそうなところは見当たりませんでした。 psqlコマンドも認識するようなパス設定でした。 lazhuwardさん回答の方法で暫定的に解決できたので、結果論で申し訳ありませんがパスには問題なさそうです。 ご回答いただきありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問