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

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

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

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

PostgreSQL

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

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Q&A

解決済

1回答

11981閲覧

postgresとして、ログインできないです

aae_11

総合スコア178

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

PostgreSQL

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

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

0グッド

0クリップ

投稿2020/02/27 02:32

編集2020/02/27 05:26

postgresユーザー(管理ユーザー)としてログインする為、sudo su - postgresを実行し、passwordを打ち込みましたら、su: unknown login: postgresと表示されてしまいました。
何故ログインできないのかが、分からない状況です。
どなたかご助言頂けましたら幸いです。
追記①
psql --versionの実行結果が、「psql (PostgreSQL) 11.5」と表示されていたことから、postgresqlはインストールされているものと思われます。
追記②
OSはMAC、ターミナルは、fishを使用しております。
追記③
postgresqlを一度、アンインストールし、インストールし直しましたらバージョンは「12.2」となっておりました。

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

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

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

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

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

yoorwm

2020/02/27 02:48

psqlはクライアントなので、サーバがインストールされているか確認してみてください
aae_11

2020/02/27 02:50

ご指摘ありがとうございます。 サーバーがインストールされているかというのは、どのように確認を行えば良いでしょうか...?
aae_11

2020/02/27 02:52

現在、自分は、ローカル環境にて、作業を行なっているといった状況です...
yoorwm

2020/02/27 02:54

たぶん、Linuxですよね? ディストリビューションの違いや、インストールの方法によって違いが出てくるのでどのディストリビューションを使ったのか?と、インストールをどうしたか?を追記しておいてください。
amura

2020/02/27 02:54

psql -U postgres ではいれますでしょうか?
aae_11

2020/02/27 02:59

>インストールの方法によって違いが出てくるのでどのディストリビューションを使ったのか?と、インストールをどうしたか?を追記しておいてください こちらなのですが、実は、どうやってインストールしたのかを覚えていないといった状況でして... どうすれば良いでしょうか...?
aae_11

2020/02/27 03:01 編集

>psql -U postgres ではいれますでしょうか? いえ...下記のエラーが表示されてしまいました。 psql: could not connect to server: No such file or directory Is the server running locally and accepting connections on Unix domain socket "/tmp/.s.PGSQL.5432"?
amura

2020/02/27 03:06 編集

postgresサーバが起動していない様ですので起動できますか? V11で新しいので sudo systemctl start postgresql での起動かな。
aae_11

2020/02/27 03:27

sudo systemctl start postgresql こちらのコマンドを試して見たのですが、 「sudo: systemctl: command not found」と表示されてしまいました。 実は、自分はdjangoにて、postgresqlを使用したのですが、もしかしたら、こちらの問題はdjangoが関わっているような気がして参りました...
yoorwm

2020/02/27 03:35

MacのPostgreSQLは分からんなぁ・・・django環境も分からんし。 「mac postgresql 起動」で調べてみて一番近そうなページを見てみるか、そのdjango環境を整えた時にみたページを貼り付けてみると誰か知っている人が居るかもしれませんね。
hoshi-takanori

2020/02/27 03:47

Mac で postgresql はどうやって入れましたか? brew ですか?
aae_11

2020/02/27 03:52

> Mac で postgresql はどうやって入れましたか? brew ですか? はい。brewでインストールいたしました。
aae_11

2020/02/27 03:56 編集

> 「mac postgresql 起動」で調べてみて一番近そうなページを見てみるか、そのdjango環境を整えた時にみたページを貼り付けてみると誰か知っている人が居るかもしれませんね。 そうなんですよね...djangoが関わってきていたりする場合は環境の違いなどもありますし、難しいですよね...
aae_11

2020/02/27 04:01

>了解です。回答書きます。 ありがとうございます。よろしくお願いします
amura

2020/02/27 04:04

postgres -D /xxx/dataで起動できる様です(ググった)initdbを行った場所(/xxx/data)でのユーザ権限を見て、そのユーザでログインして起動できると思います。
aae_11

2020/02/27 04:15 編集

>initdbを行った場所 こちらなのですが、覚えていないといった状況でして...もしくは、行なっていないのではないかとおも思っております...
amura

2020/02/27 04:22

そうであれば、postgresユーザ作成、ディレクトリ作成(dbの場所)、initdbして起動の流れですが、ググると良いと思います。
aae_11

2020/02/27 04:28

こちら「 https://qiita.com/yusk24/items/e102f3660120ff4fa5e0 」には「postgres」ユーザが自動で作成されるとあるのですが、「createuser」をしようにも、sudo su - postgresのコマンドでログインすることが出来ない状況です...
amura

2020/02/27 04:38 編集

私も自動でpostgresユーザができると思ってましたが/etc/passwsにpostgresは不在ですよね。brewする際にsudoで行いましたでしょうか? 作成ユーザはpsqlのオーナーと同じです。おそらくpostgresも存在しているのでご確認ください。 rootになる場合 sudo su - でなれると思います。
hoshi-takanori

2020/02/27 04:35

brew は基本的にユーザー権限で全てを行いますので、回答に書いた通り、sudo の必要はありませんし、むしろ下手に sudo するとおかしくなります。
amura

2020/02/27 04:50

すみません知りませんでした。
hoshi-takanori

2020/02/27 05:00

いえいえ、Mac (brew) は特殊なので、ご存知ないのは当然です(というか、むしろそんな怖いこと知りたくないですよね…。)
amura

2020/02/27 06:03

実はマックPROを所持しておりまして大変恥ずかしいです。ベースのOSが旧BSDなのにrootで更新はご法度ですよね。ご指摘ありがとうございます。
guest

回答1

0

ベストアンサー

Mac で Homebrew を使う場合、基本的にユーザー権限でプログラムをインストールすることになります。なので、postgres ユーザーはできませんし、sudo の必要もありません。(むしろ、下手に sudo するとおかしくなります。)

postgresql サーバーの起動方法は、インストール時に、

==> postgresql To migrate existing data from a previous major version of PostgreSQL run: brew postgresql-upgrade-database To have launchd start postgresql now and restart at login: brew services start postgresql Or, if you don't want/need a background service you can just run: pg_ctl -D /usr/local/var/postgres start

という表示が出るように、二つの方法があります。一つは brew services start postgresql で自動起動する方法、もう一つは pg_ctl -D /usr/local/var/postgres start で毎回起動する方法です。自動起動するようにすれば、システムの再起動時に postgresql サーバーも自動的に立ち上がります。
(brew services というのは Homebrew が提供するサービス管理ツールで、Linux の systemctl に相当するものです。詳しくはこのへん。)

サーバーが起動したらデータベースに入ってみましょう。
(ちなみに、いま入れたらバージョン 12.2 でしたが、たぶん 11.5 でも同様だと思います。)

$ psql postgres psql (12.2) Type "help" for help. postgres=# select * from pg_user; usename | usesysid | usecreatedb | usesuper | userepl | usebypassrls | passwd | valuntil | useconfig ---------+----------+-------------+----------+---------+--------------+----------+----------+----------- hoshi | 10 | t | t | t | t | ******** | | (1 row) postgres=# \q

postgrsql のユーザーが自分しかいないのが分かります。Linux など、他の OS では postgres という名前のスーパーユーザーが作られるので、ネットの解説記事などもそれに合わせた書き方になっています。ので、Mac でも postgres ユーザーを作っておくと良いでしょう。

$ createuser --interactive Enter name of role to add: postgres Shall the new role be a superuser? (y/n) y $ psql -U postgres psql (12.2) Type "help" for help. postgres=# select * from pg_user; usename | usesysid | usecreatedb | usesuper | userepl | usebypassrls | passwd | valuntil | useconfig ----------+----------+-------------+----------+---------+--------------+----------+----------+----------- hoshi | 10 | t | t | t | t | ******** | | postgres | 16387 | t | t | f | f | ******** | | (2 rows) postgres=# \q

あとは、普通に使えると思います。ネットの記事などで sudo su - postgres などとして postgres ユーザーになって作業すると書いてある場合は、普通のコマンド (createuser, pg_dump など) であれば自分のユーザーのまま実行できますし、データベースにスーパユーザーとして入る場合は上記のように psql -U postgres とすれば OK です。

参考: macにbrewを使ってpostgreSQLをインストールする - Qiita

投稿2020/02/27 04:30

編集2020/02/27 04:50
hoshi-takanori

総合スコア7895

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

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

aae_11

2020/02/27 05:41

ご回答ありがとうございます。 ご丁寧にご説明くださり、感謝です... 「brew services start postgresql」こちらのコマンドで、自動起動するように設定致しました。 >postgrsql のユーザーが自分しかいないのが分かります。Linux など、他の OS では postgres という名前のスーパーユーザーが作られるので こちらなのですが、OSごとにpostgresが作られたり作られなかったりする訳だったのですね... 納得いたしました... ご提示頂いた通りの手順で、行なって見ましたら、「psql -U postgres」の実行結果は無事成功し、ログインすることが出来ました。 誠に、ありがとうございました。
hoshi-takanori

2020/02/27 05:52

> OSごとにpostgresが作られたり作られなかったりする訳だったのですね... そうですね。普通は postgres が作られるのですが、Mac というか brew が特殊なのです。 なので、brew で入れたコマンドに関する質問の際には、Mac (brew) と明記することをお勧めします。
aae_11

2020/02/27 05:57

ありがとうございます。了解しました。Mac (brew) に関しては、質問に明記するようにしたいと思います。 すみません。重ね重ね申し訳ないのですが、一点お聞きしたいことがございまして... 「sudo su - postgres」として、postgresへログインするのと、「psql -U postgres」でログインするのでは、どのような違いがあるのでしょうか...?
hoshi-takanori

2020/02/27 06:18

sudo su - postgres の postgres ユーザーとは、OS が管理するユーザーになります。これとは独立に、PostgreSQL 側でもデータベースのユーザーというものを(データベースのテーブルで)管理しておりまして、回答の中の select * from pg_user; というのはそれを表示する SQL 文になります。 「独立して」というのは、例えば OS 側に postgres というユーザーがいなくてもデータベースのユーザーとして postgres を作ることができるし、逆に OS 側のユーザーがそのままデータベースのユーザーになるとは限らないということです。通常 Linux などでは PostgreSQL インストール時に postgres という名前の OS のユーザーと、同じく postgres という名前のデータベースのスーパーユーザーを作りますが、Mac(というか brew)では brew install した Mac ユーザーと同じ名前でデータベースのスーパーユーザーが作られます。 このため、通常の Linux 向けに書かれたインストール記事ではインストール後に自分のデータベースユーザーを作ろうと書いてあることが多いと思いますが、この回答では逆に postgres ユーザーを作ることをお勧めしました。 また、PostgreSQL を使った開発記事では、データベース(というかシステム)ごとに専用のユーザー(例えばブログなら bloguser とか)を作ろうと書いてあることが多いと思います。その場合、データベースのユーザーを作ることになりますが、sudo su - postgres して createuser bloguser するように書いてあったら、brew の場合は自分のユーザーのままで createuser bloguser すればいいということです。
hoshi-takanori

2020/02/27 06:34 編集

大事なことを書き気忘れました。psql コマンドですが、通常 psql -U (データベースユーザー名) (データベース名) として起動しますが、「-U (データベースユーザー名)」や「(データベース名)」を省略した場合は、OS のユーザー名(データベース名だけを省略した場合はデータベースユーザー名)が使われます。(存在しない場合はエラーになります。) sudo su - postgres して psql コマンドを(引数を省略して)実行すると、データベースの postgres ユーザーで postgres データベースに入るという意味になります。この postgres データベースというのは PostgreSQL のシステム管理用のデータベースで、pg_user や pg_database などの重要なテーブルが存在します。 これに対して、一般ユーザー(例えば hoshi)で psql コマンドを引数なしで実行した場合、hoshi という名前のデータベースユーザーで、hoshi という名前のデータベースに入るという意味になります。(hoshi という名までのデータベースがなければエラーになりますが、PostgreSQL では自分用に自分の名前でデータベースを作る習慣があります。) 回答の中ではまず psql postgres しましたが、これは自分のデータベースユーザーで postgres データベースに入っています。これに対して、psql -U postgres はデータベースの postgres ユーザーで、それと同じ名前の(つまり postgres)データベースに入ることになります。
aae_11

2020/02/27 07:25

ご丁寧に教えて頂きありがとうございます。 大変わかりやすく、詳細にご説名頂きましたおかげで、理解が深まりました。 まだ、postgresqlをいじった経験があまりない為、完璧には把握仕切れていない部分はあるのですが、分からなくてなってしまった際などは、見返させて頂きたいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問