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

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

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

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

PostgreSQL

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

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Q&A

解決済

2回答

2663閲覧

postgresqlでデータベースに接続できません。

gomes_2222

総合スコア94

Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

PostgreSQL

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

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

0グッド

0クリップ

投稿2021/12/02 10:57

編集2021/12/02 15:54

おそらくパスワードが正しく設定できていないということなのかと思いますが、思いつく限りの解決方法やりましたがうまく行かなかったです。
どなたかわかる方いますか?よろしくおねがいします。

今回はphpでwebサイトを作りたいと思っています。ローカルの環境はdockerで構築し、データベースはpostgresqlを使います。

前提・実現したいこと

postgresqlで、作成したデータベースに接続したいです。

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

DBeaverを使用して作成したデータベースに接続しようとしたところ、以下エラーが出て接続できません。

ユーザ"sample"のパスワード認証に失敗しました

該当のソースコード

この作業に先立ち、windowsにDockerのローカル環境を作りました。
その後、docker execコマンドでコンテナに入り、以下の操作をしてsampleユーザーとデータベースを作成しました。

docker exec testvm bash su postgres psql CREATE USER sample WITH PASSWORD 'pass'; CREATE DATABASE sampledb OWNER = sample;

また、コンテナに入った状態で以下コマンドを入力し、sampleユーザーで接続を試みたところ、パスワードの入力無しで接続できました。
本来パスワードを求められるはずなのになぜだろうと思いますが、理由が思いつきません。

su postgres psql -U sample

試したこと

・パスワード、ユーザー名、データベース名が誤っていないか確認
・デフォルトで入っているユーザー「postgres」でデータベースに接続し、以下sqlを実行して改めてパスワードを設定してやり直す。

sql

1ALTER USER "sample" WITH PASSWORD '新しいパスワード';

・以下のsqlを実行し、ユーザーテーブルを確認。ユーザーsampleのパスワードのカラムに暗号化された内容が入っているのが確認した。(パスワードがnullでないことを確認した。

sql

1SELECT * FROM pg_authid

補足情報(FW/ツールのバージョンなど)

windows10
postgresql9.5
Ubuntu 20.04 LTS
docker desktop
dbeaver

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2021/12/03 00:49 編集

何の情報を頼りにそのような手順を進めているのでしょうか。今軽く「docker postgresql」などとネット検索してみても、そういうやり方ズバリの指南書が見つからなかったもので、参考までに教えていただけませんでしょうか。それと、PostgreSQLのバージョンが9.5であることは、その参考情報によるものなのでしょうか。あと、ポート番号に一切触れていないのも気になります、デフォルトでは5432ですが使用している他のプログラムがないかのチェックも確認をお願いします。
guest

回答2

0

自己解決

結論から言うとホスト名が誤っていました。

この場合、データベースはubuntu上で動いているので、ホスト名はlocalhostではない。
ubuntuを起動し、コマンドでipアドレス調べて、そのipアドレスで解決した。

投稿2021/12/18 03:04

gomes_2222

総合スコア94

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

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

0

PostgreSQLはちょっぴりわかりますが、Dockerはさっぱりわかりませんので、
参考になりそうな情報を引用するにとどめます。

DockerコンテナからホストOSのPostgresにアクセス全開設定にせずにログインする方法 - Qiita

PostgreSQLに慣れてないものとお察しして少し説明を足しますと、
PostgreSQLサーバーへの接続において、クライアント認証をどうするかという話がつきまといます。
インストールしただけ(立ち上げただけ)だと、
OSのユーザー名がPostgreSQLでのロールとして扱われる
peer認証だったかもしれません。
それを、ユーザー名とパスワードで認証できるようにするために、
PostgreSQLが参照する定義ファイル pg_hba.conf にてクライアント認証方法を定義する必要があります。
19.3.2. パスワード認証

それと、Dockerコンテナの内と外でネットワークが別になっているので、
何かポート転送のような定義が必要になってくるのではないかと察します。

投稿2021/12/03 01:01

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問