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

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

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

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

PostgreSQL

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

Q&A

解決済

1回答

9628閲覧

DjangoでPostgresDBに接続できない

Tomo0225

総合スコア67

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

PostgreSQL

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

0グッド

0クリップ

投稿2022/01/04 03:05

Django(Python)でWebアプリを作成しています。
デプロイ先の環境はOSがCentoOS7で、データベースはPostgreSQLを使用しています。

PostgreSQL上に、myappというデータベースを作り、yasueというユーザーで接続しようとしています。
myappは所有者はpostgresですがyasueというユーザーにはsuperuser権限を付与しています。パスワードは、passwdとしています。PSQLでの操作は下記のとおり実行しました。

デプロイしようとしたのですが、python migrateしようとすると、下記エラーが出ます。

psycopg2.OperationalError: connection to server at "localhost" (::1), port 5432 failed: FATAL: Ident authentication failed for user "yasue"

settings.pyのデータベースに関する設定は、下記の通りになっています。

DATABASES = {

'default': { 'ENGINE': 'django.db.backends.postgresql_psycopg2', 'NAME': 'myapp', 'USER': 'yasue', 'PASSWORD': 'passwd', 'HOST': 'localhost', 'PORT': '', }

}

pg_hba.confの設定はpeer認証となっていたところをmd5に変更し、postgresの再起動も試しています。
またpsql -U yasue -d myappでデータベースに接続するとパスワードを聞かれ、入力するとmyappに接続することができます。
そのため原因が全く分からず教えていただきたいです。

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

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

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

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

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

m.ts10806

2022/01/04 03:08

HOSTのところをIP入れたらどうなりますか? PORTも指定したほうが良いと思います。
Tomo0225

2022/01/04 03:14

設定を書き換え 'HOST': '127.0.0.1', 'PORT': 5430, としたところ以下のようにエラー文が増えました。 django.db.utils.OperationalError: connection to server at "127.0.0.1", port 5430 failed: Connection refused Is the server running on that host and accepting TCP/IP connections?
m.ts10806

2022/01/04 03:17

デフォルトポートから変えてるんですか? そのHOSTはCentOSのIPではないですよね
Tomo0225

2022/01/04 03:23

ポート番号が間違っていたため修正たところ最後のエラー文は消えました。 IPは同じサーバー上でDBを動かしているため自身を指すIPとなっております。 'HOST': '127.0.0.1', 'PORT': 5432, django.db.utils.OperationalError: connection to server at "127.0.0.1", port 5432 failed: FATAL: Ident authentication failed for user "yasue"
m.ts10806

2022/01/04 04:26

ifcofigで出てくるinetのipを入れてみてください。
m.ts10806

2022/01/04 04:27

もしくはhostname で出てくるhost
Tomo0225

2022/01/04 05:02

ifconfigで調べたIPとhostnameで調べたホストネーム(localhost.localdomain)でもダメでした
CHERRY

2022/01/04 11:11

> またpsql -U yasue -d myappでデータベースに接続するとパスワードを聞かれ、入力するとmyappに接続することができます。 psql は、 -h オプション(接続先ホスト指定)を省略した場合、Unixドメインソケット経由でローカルホスト上のサーバに接続するのがデフォルト動作だったと思います。 質問に書かれている上記のコマンドでは、Unixドメインソケットで接続している可能性もあるのではないでしょうか。 psql に -h , -p で、ホストとポートを指定して下記のように接続するとどうなるでしょうか。 psql -U yasue -d myapp -h 127.0.0.1 -p 5432 -h を指定して接続できない場合は、 PostgreSQL サーバ側で、TCP 接続が制限されていることはないでしょうか。
Tomo0225

2022/01/04 15:46

psql -U yasue -d myapp -h 127.0.0.1 -p 5432 で接続できないことで原因が分かりました。 ありがとうございます。
guest

回答1

0

自己解決

psql -U yasue -d myapp -h 127.0.0.1 -p 5432
で接続を試みたところ失敗しました。
そこで外部許可可能にする設定を改めてすることでmigrateすることができました。
以下の記事を参考にしました。
https://qiita.com/tom-sato/items/d5f722fd02ed76db5440

投稿2022/01/04 15:45

Tomo0225

総合スコア67

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問