LoginSignup
ooutim2020
@ooutim2020 (kosekose)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

UbuntuでのPostgreSQLに関する質問

postgresqlに関する質問

解決したいこと

参考書 Ruby on Rails5速習実践ガイドという本を元にUbuntuでpostgresqlを使ってデータベースのインストールとセットアップをしています。
postgresqlをインストール後にpsql postgresコマンドを打つとエラーが起きるのですが解決方法がわかりません。
解決方法を教えて下さると助かります。
PCはwindowsです。2022-05-31.png

発生している問題・エラー

psql: error: connection to server on socket "/var/run/postgresql/.s.PGSQL.5432" failed: FATAL:  role "kossetuman" does not exist

該当するソースコード

 psql postgres

期待する動作

 $ psql postgres
psql (14.3 (Ubuntu 14.3-1.pgdg20. 04+1))
Type "help" for help.

postgres=#

書籍にはpsql postgresでコンソールを立ち上げて、正常に動作しているか確認と書いてあるがエラーが発生しています。
調べたが解決方法がわかりません。
誰か知っている人がいましたらアドバイス下さい。

自分で試したこと

そもそもs.PGSQL.5432なんてファイルないしどうしよう…と思って調べていたが動やらこのエラーはsqlのサーバーを起動していないために出るらしい。

なのでこのエラーがでたら

sudo /etc/init.d/postgresql start
と打てばOK

無事sqlが起動されエラーが出なくなるはず。

上記の記事を元にsudo /etc/init.d/postgresql startコマンドを実行して再度psql postgresコマンドを実行したが改善されず。
解決方法やなぜこのエラーが出るのか想定される原因がわかる人はアドバイスしていただけると幸いです。

0

1Answer

kossetumanというロールで接続を試みようとしていますが、
そのようなロールは存在しません、と言われています。

psql -U postgresを実行するとどうなりますか?

ロールについては以下を読んでみてください。

0

Comments

  1. @ooutim2020

    Questioner
    ご返信ありがとうございます。
    psql -U postgresと入力すると下記のエラーがでます。

    psql: error: connection to server on socket "/var/run/postgresql/.s.PGSQL.5432" failed: FATAL: Peer authentication failed for user "postgres"

    回答者様が提示されたサイトを拝見させて頂きました。
    CREATE ROLE <ロール名> WITH LOGIN PASSWORD '<パスワード>'コマンドでテストユーザーを作成すれば宜しいのでしょうか?
    それとも現段階でpostgresは存在しなければおかしい?
    初心者なもので曖昧な表現になってしまい申し訳ありません。

    参考書通りの文脈及びコードも添えさせていただきますので何か不備が考えられる部分がありました教えて頂けると幸いです。

    ---以下参考書文脈及びコード---

    ●aptを使用してインストールを行います。以下の一連のコマンドを実行してください。

    ・$ sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/             $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'

    ・$ wget --quiet -0 - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -

    ・$ sudo apt update

    ・$ sudo apt install postgresql

    ●バージョンを出力して、正しくインストールされていることを確認します。

    ・$ psql -V

    ●Railsから利用できるように、PostgreSQLを起動しておきます。

    ・$ sudo service postgresql start

    ●初期状態ではデータベースのスーパーユーザーとして「Postgres」ユーザーが作成されていますが、Ubuntuのログインユーザー「Postgres」の権限でしか利用できないほか、Railsの初期のデータベース接続設定を変更しないと利用できないなど、開発には不便です。そのため開発環境用のユーザーを別途作成しましょう。Railsの初期設定で利用できるよう、データベース名をUbuntuのログインユーザーと同じ名前にしておきます。

    ・$ sudo su postgres -c 'createuser -s {Ubuntuのログインユーザー名}'

    ●次のコマンドでコンソールを立ち上げて、正常に動作していることが確認できたら、「\q」を入力して終了します。

    ・$ psql postgres

    ●さらに、RailsからPostgreSQLを扱うためのgem「pg」が利用するパッケージをあらかじめインストールしておきます。

    ・$ sudo apt install libpq-dev

    ページ上部に貼り付けたUbuntuの画像とコードは同じです。
    何か考えられる不備等がございましたらご意見していただけると助かります。
  2. CREATE ROLE <ロール名> WITH LOGIN PASSWORD '<パスワード>'コマンドでテストユーザーを作成すれば宜しいのでしょうか?

    このサイトはあくまで「ロール」とは何か、というモノを
    理解していただくために提示しました。
    「psql postgres」コマンドで接続できていない以上、
    そもそも「CREATE ROLE <ロール名> WITH LOGIN PASSWORD '<パスワード>'」コマンド
    は実行できません。(こちらはPostgreSQL側でのコマンドになります)

    それとも現段階でpostgresは存在しなければおかしい?

    Peer authentication failed for user "postgres"
    こちらはまた別のエラーになります。エラーメッセージで検索してください。

    以下の部分は実行し、成功しましたか?
    ●初期状態ではデータベースのスーパーユーザーとして「Postgres」ユーザーが作成されていますが、Ubuntuのログインユーザー「Postgres」の権限でしか利用できないほか、Railsの初期のデータベース接続設定を変更しないと利用できないなど、開発には不便です。そのため開発環境用のユーザーを別途作成しましょう。Railsの初期設定で利用できるよう、データベース名をUbuntuのログインユーザーと同じ名前にしておきます。

    ・$ sudo su postgres -c 'createuser -s {Ubuntuのログインユーザー名}'


    「less /etc/passwd」コマンドなどで、
    実行しようとしているユーザがいるか、権限はどうなっているか、
    「whoami」コマンドなどで、
    今どのユーザなのか、等の情報を確認してください。

    また、提示いただいた参考書や、今私が書いたコマンドですが、
    もし、コマンドの意味が分からないようでしたら、
    コピペではなく、しっかり調べてから実行してください。
    (Linuxでのコマンド実行は意味を理解していないと危険を伴う可能性があります)
  3. @ooutim2020

    Questioner
    承知致しました。
    再度コマンドとエラーの意味を調べて実行してみます。
    ご返信ありがとうございます!

Your answer might help someone💌