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

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

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

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PostgreSQL

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

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

VirtualBox

VirtualBoxは、現在米オラクル社が開発している、 x86仮想化ソフトウェア・パッケージの一つです。

Vagrant

Vagrantは、VirtualBox上の仮想マシンを コマンドラインから作成してくれるソフトウェアです。 ビルド環境など容易に構築が可能です。

Q&A

解決済

2回答

1203閲覧

PostgreSQLでデータベースの確認(psql -l)でのエラーについて

roronoazoro

総合スコア113

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PostgreSQL

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

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

VirtualBox

VirtualBoxは、現在米オラクル社が開発している、 x86仮想化ソフトウェア・パッケージの一つです。

Vagrant

Vagrantは、VirtualBox上の仮想マシンを コマンドラインから作成してくれるソフトウェアです。 ビルド環境など容易に構築が可能です。

0グッド

0クリップ

投稿2017/06/14 05:14

編集2017/06/14 07:52

現在vagrantを用いて環境構築を行っています。

macのローカル環境ではpsql -lでデフォルト?のデータベースが表示されますが、vagrant sshでログインし、cd /vagrantでローカルのVagrantfileのある共有ディレクトリに移動してpsql -lとするとpsql: FATAL: Rolle »vagrant« existiert nichtと返されてしまいます。
ちなみに、psql --versionで確認するとpsql (PostgreSQL) 9.5.7と表示されるのでpsqlは存在しているはずです。

こちらの原因について教えていただけると幸いです。
よろしくお願いいたします。

パソコン環境
macOS Sierra バージョン 10.12.5

cat Vagrantfile 結果

ruby

1# -*- mode: ruby -*- 2# vi: set ft=ruby : 3 4# All Vagrant configuration is done below. The "2" in Vagrant.configure 5# configures the configuration version (we support older styles for 6# backwards compatibility). Please don't change it unless you know what 7# you're doing. 8Vagrant.configure("2") do |config| 9 # The most common configuration options are documented and commented below. 10 # For a complete reference, please see the online documentation at 11 # https://docs.vagrantup.com. 12 13 # Every Vagrant development environment requires a box. You can search for 14 # boxes at https://atlas.hashicorp.com/search. 15 config.vm.box = "CentOS7" 16 17 18 # Disable automatic box update checking. If you disable this, then 19 # boxes will only be checked for updates when the user runs 20 # `vagrant box outdated`. This is not recommended. 21 # config.vm.box_check_update = false 22 23 # Create a forwarded port mapping which allows access to a specific port 24 # within the machine from a port on the host machine. In the example below, 25 # accessing "localhost:8080" will access port 80 on the guest machine. 26 # NOTE: This will enable public access to the opened port 27 config.vm.network "forwarded_port", guest: 3000, host: 3000 28 29 # Create a forwarded port mapping which allows access to a specific port 30 # within the machine from a port on the host machine and only allow access 31 # via 127.0.0.1 to disable public access 32 # config.vm.network "forwarded_port", guest: 80, host: 8080, host_ip: "127.0.0.1" 33 34 # Create a private network, which allows host-only access to the machine 35 # using a specific IP. 36 config.vm.network "private_network", ip: "192.168.33.10" 37 38 # Create a public network, which generally matched to bridged network. 39 # Bridged networks make the machine appear as another physical device on 40 # your network. 41 # config.vm.network "public_network" 42 43 # Share an additional folder to the guest VM. The first argument is 44 # the path on the host to the actual folder. The second argument is 45 # the path on the guest to mount the folder. And the optional third 46 # argument is a set of non-required options. 47 # config.vm.synced_folder "../data", "/vagrant_data" 48 49 # Provider-specific configuration so you can fine-tune various 50 # backing providers for Vagrant. These expose provider-specific options. 51 # Example for VirtualBox: 52 # 53 # config.vm.provider "virtualbox" do |vb| 54 # # Display the VirtualBox GUI when booting the machine 55 # vb.gui = true 56 # 57 # # Customize the amount of memory on the VM: 58 # vb.memory = "1024" 59 # end 60 # 61 # View the documentation for the provider you are using for more 62 # information on available options. 63 64 # Define a Vagrant Push strategy for pushing to Atlas. Other push strategies 65 # such as FTP and Heroku are also available. See the documentation at 66 # https://docs.vagrantup.com/v2/push/atlas.html for more information. 67 # config.push.define "atlas" do |push| 68 # push.app = "YOUR_ATLAS_USERNAME0. 番号リスト/YOUR_APPLICATION_NAME" 69 # end 70 71 # Enable provisioning wih a shell script. Additional provisioners such as 72 # Puppet, Chef, Ansible, Salt, and Docker are also available. Please see the 73 # documentation for more information about their specific syntax and use. 74 # config.vm.provision "shell", inline: <<-SHELL 75 # apt-get update 76 # apt-get install -y apache2 77 # SHELL 78end

試したこと
出力 systemctl list-units --type=service | grep postgres
結果 postgresql-9.5.service loaded active running PostgreSQL 9.5 database server

出力 'sudo yum install postgresql-server'
結果 'Komplett!'

CentOS7ローカル開発環境にてexit直後、(Vagrantfile直下のディレクトリ)
出力 psql -l -U postgres
結果 psql: FATAL: role "postgres" does not exist

  1. cd /vagrant 共有フォルダへ移動
  2. ls 共有フォルダ内表示
  3. createuser -s vagrant

の流れになります。

イメージ説明

出力 su - postgres
結果 Letzte Anmeldung: Montag, den 12. Juni 2017, 07:21:16 CEST auf pts/0
状態 [vagrant@localhost vagrant]-bash-4.2$ psql -l へと初期状態が変更

イメージ説明

イメージ説明

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

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

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

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

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

A.Ichi

2017/06/14 05:32

systemctl list-units --type=service | grep postgres または /etc/init.d/postgresql status を行ってpostgresが稼働中であるかご確認ください。
roronoazoro

2017/06/14 05:56

ご回答ありがとうございます。 早速試したところ、postgresql-9.5.service loaded active running PostgreSQL 9.5 database server と表示されるので稼働しているでしょうか。
A.Ichi

2017/06/14 06:06

systemctlされたのですね、稼働している様ですので、vagrantのrollが無い様です。macと同じユーザかpostgresにて接続確認できますでしょうか? psql -l -U postgres
roronoazoro

2017/06/14 06:15 編集

この場合ローカル環境からexitしたそのディレクトリがmacユーザーとなりますでしょうか。一応exit直後でpsql: FATAL: role "postgres" does not existを試してみると、psql: FATAL: role "postgres" does not existと返ってきます。また、postgresにての接続確認はどのようにすればいいのでしょうか。よろしくお願いします。
A.Ichi

2017/06/14 06:54

exitはされないでコマンドの実行をお願いいたします。vagrantでプレインストールされたものであれば、su - posstgres で psql -l コマンドが可能だと思われます。
roronoazoro

2017/06/14 07:08

ありがとうございます、無事に表示されました。たびたびの質問で恐縮ですが、ここでいうvagrantでプレインストールされたものというのはpsqlのことでしょうか?また表示形式が-bash-4.2$となったのですが、これはroot権限でログインされたようなイメージで大丈夫でしょうか。よろしくお願いします。
A.Ichi

2017/06/14 07:25 編集

vagrantではpostgresがプレインストールされているバージョンが有ります。これをインストールされたと思います。またyumで再インストールされた様ですが、これによりpostgresのバージョンが変わったとは思います。おそらくmacでのpsqlの接続先とsshからの接続先は異なっているかもしれません。sshでcd /vagrantをされてもディスクは共有されていてもサーバの共有には成りません。もしかしたらmac上にpostgresが稼働してvagrant上で他のpostgresが稼働しているのではないでしょうか。vagrantサーバのipアドレスが分かるのであれば、macからは、psql -h xx.xxx.xx.xx -U postgres で接続できると思います。
A.Ichi

2017/06/14 07:30

「root権限でログインされたようなイメージで大丈夫でしょうか。」postgresとしてのroot権限の様に考えて良いと思います。このユーザにログインされた後、色々なpostgresの管理コマンドが使えます。
roronoazoro

2017/06/14 07:51

詳しいご回答ありがとうございます。確かにバージョンが違っております。postgresの稼働の確認はpsql statusであってますでしょうか。vagrantサーバーのipアドレスは、ssh後のVagrantfile内の192.168.33.10だと仮定して行った実行結果を本文補足に追記いたします。よろしくお願いします。
A.Ichi

2017/06/14 08:00

192.168.33.10はmacからは見えないかもしれません。Vagrantfileを修正してvagarntリスタートする必要が有ると思います。修正方法はぐぐると良いです。
roronoazoro

2017/06/14 10:28

たびたびご対応していただきありがとうございました。ざっくりとイメージが湧いてきました。あとはググりながら何度もやってみたいと思います。また分からない点がでた時はどうぞよろしくお願いします。
guest

回答2

0

ベストアンサー

ログインしたユーザ(vagrant sshなら "vagrant")に対する
ロール(データベースユーザー)が作成されていないのだと思います。

PostgreSQL の管理者権限を持っているユーザー(パッケージの
デフォルトだと "postgres"?)になって、

bash

1createuser vagrant

をやってみてください。vagrant ユーザーをスーパーユーザーに
する場合は createuser -s vagrant です。

投稿2017/06/14 06:21

hotta

総合スコア1613

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

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

roronoazoro

2017/06/14 06:43

ご回答ありがとうございます。 本文補足にキャプチャ付きでやってましたので確認よろしくお願いします。
hotta

2017/06/14 07:02

createuser を実行するのはホストOS(Mac OS)側ではなく GuestOS(CentOS)側ですが大丈夫ですか?
roronoazoro

2017/06/14 07:10

はい、こちらvagrant up → vagrant sshでcentOS7の仮想環境にログインしております。。
hotta

2017/06/14 07:15

CentOS7 側で、以下のコマンドの出力を教えてください。 id postgres rpm -qa | grep ^postg
roronoazoro

2017/06/14 07:19

出力結果を本文補足に追加いたしました。ご確認よろしくお願いします。
hotta

2017/06/14 07:30 編集

PostgreSQL-9.2 と PostgreSQL-9.5 が混在していますね。 (よって psql も2種類あるかも?) postgres ユーザーに su してから psql -l すると通ったりしませんか? これで通るようなら、この状態で createuser -s vagrant します。 その後、vagrant ユーザーに戻って、psql が postgrs ユーザーで 使っているものと同じになればいいんでしょうけど。 一番スッキリするのはどちらかのバージョンをばっさり削除する ことなんですが…。
roronoazoro

2017/06/14 07:55

su で行うといけますが、-bash-4.2$となります。ドットインストールのpostgresの勉強なのですが、ここで作業していいものなのでしょうか? この問題が解決後、もう一度、環境構築してみます。。。
hotta

2017/06/14 08:03

練習環境とのことですので、psql の操作についは CentOS7 上の postgres ユーザーで行っても構いませんし、他の方が書かれているように、 Host(Mac OS)から "psql -h Cent7のIPアドレス" で操作しても構いません。 アプリの練習が終わったら、改めて環境構築し直してください。 作り直す回数に比例してスキルも上がっていきます(^^)
roronoazoro

2017/06/14 10:31

親切なご対応ありがとうございます。ざっと理解することが出来ました。あとはググりながらやってみます。 また、分からないことがあった時はどうぞよろしくお願いします。
guest

0

vagrantで建てたゲストサーバ内に、postgres-serverがインストールされていないのではないでしょうか?

投稿2017/06/14 05:35

yoorwm

総合スコア1305

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

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

roronoazoro

2017/06/14 06:05 編集

ご回答ありがとうございます。sudo yum install postgresql-serverでインストールし直し、Komplett!と表示され、その後、psql -lとしてみましたが、結果は同じでした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問