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

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

ただいまの
回答率

90.22%

PostgreSQLでゲストOSトホストOSの接続方法について

受付中

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 1,205

roronoazoro

score 67

vagrant、postgresqlの仮想環境を構築しています。
ゲストOS、centos64の共有ディレクトリ、cd /vagrant/postgres-lesson内でデータベース等をいじって行きたいと考えております。

現在ゲストOS内ではデータベースに繋がることを確認いたしました。(下記画像参照)
そして、ホスト側でも繋げることができるらしいので、設定してみたいのですが、やり方がいまいちわかりません。

現在下記サイトを参考に環境構築しており、「接続の設定」で詰まっています。
Vagrant上のCentOSにPostgreSQLを最速で構築する

/var/lib/pgsql/data/postgresql.confの中のfileをいじるようなのですが、ファイルが存在しません。(下記finder画像参照)

情報が足りない点が多々あるかと思いますが、その時は教えて頂けますとありがたいです。
よろしくお願いします。

finder

  1. バージョンの確認
  2. デフォルトデータベースの表示
  3. postgresログイン
    vagrant

管理者権限でのpsql -l
イメージ説明

createusr -a -d -U postgres -P testusr
イメージ説明

  1. createuser database testdb owner testusr;
  2. exit
  3. psql tetdb -U testusr

イメージ説明

  1. 管理者権限
  2. psql -U postgres
  3. データベースの作成
  4. \q
  5. psql testdb -U testusr
  6. exit
    イメージ説明

サーバーエラー?
Läuft der Server lokal und akzeptiert er Verbindungen  auf dem Unix-Domain-Socket »/var/run/postgresql/.s.PGSQL.5432«?
イメージ説明

  1. 仮想環境内共有ディレクトリで管理者権限の実行 (su - postgres)
  2. vagrant]$ psql -h 192.168.33.10 -U postgresの実行
  3. 接続確認
  4. 共有ディレクトリでvagrant]$ psql -h 192.168.33.10 -U postgresの実行
  5. 接続確認
    イメージ説明

ホストOS、vagrantfile直下ディレクトリで、ping 192.168.33.10の実行
イメージ説明
これはvagrantfileの設定がされている結果なのでしょうか、、?

また、ホストOS、ゲストOS(今回はcentos64)、ゲストOS内管理者権限(-bash-4.2$)と3つの状態があると思うのですが、それぞれでインストール方法や、記述方法が違くなるのでしょうか?
ホストOSでインストールしたものはゲストOSに反映されていないため、ssh後再度必要なものをインストールしていくといった考え方であっているでしょうか?

また、例えばserverの起動一つとってみても、
postgres -D /usr/local/var/postgres
pg_ctl -l /usr/local/var/postgres/server.log start
sudo service postgresql
brew services start postgresql
などとたくさんあるようで、いつも迷いながら、片っ端から試していくという形なので、知識としてなかなか定着しません。

長文で申し訳ありませんが、どれか一つでもご回答いただけると助かります。
よろしくお願いします。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

+1

PostgreSQL と、RPM パッケージの両方がからむので、なかなか難しいですね。
以下、こちらの環境で postgresql.conf を見つけるときの手順を示します。
お手元の環境と比べてみて、逐次読み替えてください。

導入した(RPM)パッケージの一覧

root:~# rpm -qa |grep ^postg
postgresql96-server-9.6.3-1PGDG.rhel7.x86_64
postgresql96-9.6.3-1PGDG.rhel7.x86_64
postgresql96-devel-9.6.3-1PGDG.rhel7.x86_64
postgresql96-libs-9.6.3-1PGDG.rhel7.x86_64

サービス名の取得(RPMパッケージの作り方によりサービス名も異なります)

root~# systemctl -a | grep postg
  postgresql-9.6.service (以下略)

サービスの状態表示

root@~# systemctl status postgresql-9.6
● postgresql-9.6.service - PostgreSQL 9.6 database server
   Loaded: loaded (/usr/lib/systemd/system/postgresql-9.6.service; enabled; vendor preset: disabled)
   Active: active (running) since 火 2017-06-06 11:54:23 JST; 1 weeks 1 days ago
 Main PID: 22430 (postmaster)
   CGroup: /system.slice/postgresql-9.6.service
           ├─22430 /usr/pgsql-9.6/bin/postmaster -D /var/lib/pgsql/9.6/data/
(以下略)

→ これにより、データベースの実体は /var/lib/pgsql/9.6/data/ 
にあるらしいことがわかる。

root~# ls /var/lib/pgsql/9.6/data/*.conf
/var/lib/pgsql/9.6/data/pg_hba.conf
/var/lib/pgsql/9.6/data/pg_ident.conf
/var/lib/pgsql/9.6/data/postgresql.auto.conf
/var/lib/pgsql/9.6/data/postgresql.conf

後は、同様に読み替えていけばいいと思います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/06/15 14:33

    詳しいご回答ありがとうございます。
    記載していただいと通り確認してみます。。

    キャンセル

0

先ずはデフォルトのデータベースの様ですので、ご自身のDB(testdb)を作成されたらどうでしょうか?

ユーザを作成します。(例testusr)
su - postgres
createuser -a -d -U postgres -P testusr

新データベースを作成します
psql -U postgres
create database testdb owner testusr;
\quit

接続確認をします
psql testdb -U testusr

confの在りかを探します多少は権限エラーは出るかも、沢山だったら2>/dev/nullを付けます
find /var -name postgresql.conf 2>/dev/null

postgresql.confと隣のpg_hba.confを修正し再起動します。

ホストからの接続確認
psql -h 192.168.33.10 -U postgres
psql testdb -h 192.168.33.10 -U testusr

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/06/15 18:25

    postgresサーバが立ち上がっていなのではないでしょうか?restartしましたか。

    キャンセル

  • 2017/06/15 21:28

    ご返事遅くなり申し訳ありません。サーバーの立ち上げ忘れでした。
    無事にデータベースも作成されpostgresql.confとpg_hba.confの編集も、上記本文の添付サイトを参考に修正いたしました。そうすると本来なら、[vagrant@localhost vagrant]$ Vagrantfile直下共有ディレクトリで「ホストからの接続確認」を打ち込むと共有されるということでしょうか?
    [vagrant@localhost vagrant]$ psql testdb -h 192.168.33.10 -U testusrとすると
    psql: konnte nicht mit dem Server verbinden: Verbindungsaufbau abgelehnt
    Läuft der Server auf dem Host »192.168.33.10« und akzeptiert er
    TCP/IP-Verbindungen auf Port 5432?
    と返されてしまいます。

    キャンセル

  • 2017/06/15 22:49 編集

    ホストからゲストへの接続ができない様です。まずはホストから ping 192.168.33.10 と打ってみてください。Vagrantfileの設定ができていれば応答が返るはずです。
    念の為、vagrant sshでfirewallをオフにします
    su service iptables stop
    su chkconfig iptables off
    再度ホストからの接続テストを行います。

    キャンセル

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

  • ただいまの回答率 90.22%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる