🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

PostgreSQL

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

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

1回答

1863閲覧

psql: error: could not connect to server: FATAL: role "OO" does not exist が解決できない

theinternet

総合スコア10

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

PostgreSQL

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

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2021/01/17 13:53

編集2021/01/17 14:43

表題のエラーがなかなか解決しません。
色々ググってみて、下記コマンドを打っても同じエラーが出てしまいなかなか前に進みません。
ご教示いただけますと幸いです。

$brew services start postgresql ==> Successfully started `postgresql` (label: homebrew.mxcl.postgresql) $ psql psql: error: could not connect to server: FATAL: role "OO" does not exist $ psql postgres psql: error: could not connect to server: FATAL: role "OO" does not exist $ createuser OO createuser: error: could not connect to database postgres: FATAL: role "OO" does not exist

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

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

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

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

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

m.ts10806

2021/01/17 21:08

「role」が何かは理解されてますか?
退会済みユーザー

退会済みユーザー

2021/01/18 00:08 編集

それに至るまでにやったことをなるべく思い出して、質問文中に書き足してください。そして質問内容的にRubyやRuby on Railsは全く関係ないと見えますが。Ruby側でなにか操作した後に改めてpsqlを叩いているのでしょうか。
guest

回答1

0

brewだからmacだろうなぁとは思うのですが、
macは知らないしrubyも知らないので、
PostgreSQL関係のみコメントします。

psqlコマンドはよく使うので、
psqlコマンド起動時オプションは気にしておいたほうがいいです。

psqlコマンド起動時オプションなどで、
接続先ホスト、ポート番号、データベース名、ユーザー名(ロール名)を与えることになります。
そしてデータベースは、ユーザー名(ロール名)によってできることできないことがあります。
psql とだけタイプすると、デフォルトのサーバー:ポートに、デフォルトのデータベースに、デフォルトのユーザーで接続を試みることになります。
ドキュメントにあります:

ホスト名を省略した場合、psqlはUnixドメインソケット経由でローカルホスト上のサーバに、Unixドメインソケットを持たないマシンではlocalhostにTCP/IP経由で接続します。 デフォルトのポート番号はコンパイル時に設定されます。 データベースサーバは同じデフォルト値を使用するので、多くの場合、ポートは指定する必要はありません。 デフォルトのユーザ名とデータベース名は、OSのユーザ名です。

また、環境変数が設定されていると、デフォルト値が上書きされて、都度コマンドラインで入力しなくても省略できます。

デフォルトが完全には適用できない時は、入力の手間を省くために、環境変数PGDATABASE、PGHOST、PGPORT、PGUSERに適当な値を設定することもできます。

またこういう記述もあります

接続するデータベース名は-d、ホスト名は-h、サーバのポート番号は-p、接続するユーザ名は-Uを使用してそれぞれ指定します。オプションでない引数がある場合、それはデータベース名(データベース名が与えられている場合にはユーザ名)とみなされます。

ということで、
psql postgres
では、デフォルトのサーバー:ポートにデフォルトのユーザーでpostgresというデータベースに接続を試みると解釈できます。
ユーザーを管理者権限のあるpostgresで接続したいのであれば、

psql -U postgres

とする必要があります。

postgresにて接続できたら、今あるデータベースがどういう状態か調べます。
\lメタコマンドでデータベースの一覧を取得できます。
\dgメタコマンドでデータベースロールを一覧を取得できます。
その他、「メタコマンド」の節で使えるコマンドを確認できますので、活用して
データベースがどういう状態なのか掌握に努めてください。

投稿2021/01/18 00:45

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

theinternet

2021/01/18 15:57

m6u さん、アドバイスありがとうございます。大変助かります。 コマンドの意味も理解できました。コマンド一覧のリンクも教えてくださりありがとうございます。 これはわかりやすいですね。 ( このサイト自体には以前たどり着いたのですが、初心者にはなかなか読みづらく、よく途中まで読んで断念していました。 ) 一方、お教えいただいたコマンドを実行しても、やはり postgresql には接続できないようです。 ``` $ psql -U postgres psql: error: could not connect to server: FATAL: role "postgres" does not exist ``` 想像するに、私のMac(すみません、マシンはMacです言っておりませんでした)自体でユーザーを追加し、そちらのユーザーで環境を構築しているのが何か関与しているかもしれません???? 原因となりそうな事柄を探すに当たり必要な情報が他にあればコメントしていただけると助かります↓ macOS Catalina バージョン 10.15.7
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問