Postgresユーザーは存在しませんか?


90

私はPostgresをインストールしたばかりで、1〜2時間、さまざまな構成をいじっています。

postgres-userに変更できないことに行き詰まっています

$ su - postgres 次のエラーが発生します。 su: unknown login: postgres

$ sudo -u postgres psql 次のエラーが発生します。 sudo: unknown user: postgres

これらの試みは、通常のユーザーとして行われます。それらをrootとして試しても、まったく同じ結果になります。OSXにHomebrewを介してpostgresをインストールし、手順を何度も読みました。


あなたはpsqlを実行しようとしているだけですか?
danielM 2014年

そうですね、適切なpostgresユーザーとして実行したいと思います。
クリスタ

一部のMac OS Xフレーバーでは、いくつかのインストール方法で、postgres_代わりにユーザーが作成されると思います。末尾のアンダースコアに注意してください。また、PostgreSQLインスタンスを実際に作成し、データベースを起動しましたか?
クレイグリンガー

1
postgresユーザーに切り替えることができませんでした。postgresql-serverパッケージをインストールした後に問題が解決しました。
セルジオ

回答:


90

psql:デフォルトのユーザー名でログインします

psql -U postgres:postgresユーザーとしてログインします

須藤は私には必要ないようです。

OS X postgresデータベースにPostgres.appを使用しています。これにより、インストールが機能していること、およびデータベースサーバーが適切に起動されていることを確認するという問題が解消されました。ここで確認してください:http : //postgresapp.com

編集:引数の使用を修正した@Erwin Brandstetterの功績です。


8
私はBrewを使用してインストールしましたが、postgresまたは_postgresという名前のユーザーを(私が見る限り)作成しなかったため、これは失敗しました。@kangkyuソリューションを説明し、問題点を説明します-あなたはその後、postgresユーザを持っていないと仮定すると:psql postgrespsql -d postgres
notapatch

21

psql --help、データベース名のオプションを設定しなかった場合(-dオプションなし)はユーザー名になります。設定しなかった場合は-U、データベースのユーザー名もユーザー名になります。

ただし、initdb(最初のデータベースを作成するための)コマンドでは、ユーザー名がデータベース名として含まれていません。というデータベースがありますpostgres最初のデータベースは、データストレージ領域が初期化されるときに、常にinitdbコマンドによって作成されます。このデータベースはpostgresと呼ばれます。

したがって、ユーザー名という名前の別のデータベースがない場合はpsql -d postgres、psqlコマンドを機能させる必要があります。そして、それは-dデフォルトでオプションを与えるようですが、psql postgresうまくいきます。

ユーザー名と同じ名前の別のデータベースを作成した場合(これはで行う必要がありcreatedbます)、コマンドpsqlのみを実行できます。また、最初のデータベースユーザー名は、brewによってマシンのユーザー名として設定されているようです。

psql -d <first database name> -U <first database user name>

または、

psql -d postgres -U <your machine username>
psql -d postgres

デフォルトで動作します。


18

OS Xは、システムアカウント名の前に「_」を付ける傾向があります。使用しているOS Xのバージョンはわかりませんが、少なくとも10.8および10.9では、デフォルトのインストールに_postgresユーザーが存在します。suこのアカウントにはパスワードがないため、(rootを除いて)このアカウントにアクセスできないことに注意してください。sudo -u _postgres一方、は正常に動作するはずです。


ありがとう!これが私が探していた答えです。ユーザーの名前を単に「postgres」に変更するためにできることはありますか?その_postgresユーザーとしてログインすると、「_ postgres」ユーザーが存在しないというpsqlの不満が生じます。別のデータベースのバックアップファイルを使用してクリーンなpostgresインスタンスを復元しようとしています
Chris Reyes-he-him

1
@ChrisReyesシステムアカウントの名前を変更すると、それらを使用するシステムコンポーネントが破損する可能性があるため、使用しないことを強くお勧めします。「postgres」という名前の別のユーザーアカウントを作成してそれを使用することもできますが、私が正しく理解している場合(そうでないかもしれません)、実行しているのは、postgresデータベース内のユーザーアカウントの名前が_postgresではないということです。DB内のアカウント名AIUIはシステムアカウント名とは別であるため、「_ postgres」システムアカウントでDBインスタンスを実行し、「postgres」データベースアカウントでそのDBを開くことは問題になりません。
Gordon Davisson


3
psql -U postgres

データベース名:postgres&ユーザー名:postgresの場合、私にとってはうまくいきました。したがって、sudoを記述する必要はありません。

そして、他のdbの場合、あなたは試すかもしれません

psql -U yourdb postgres

Postgresのヘルプで示されているように:

psql [OPTION]... [DBNAME [USERNAME]]

私の場合:$ psql -U postgres出力を生成しますpsql: FATAL: role "postgres" does not existが、psql postgres動作します。
Frozen Flame

3

私はkryshahとまったく同じエラーが出るsu - postgressudo -u postgres psql。DanielMの回答にも誤りがあります。

誤った設定時に出力

ただし、przbabuのコメントから回答してください。

masi$ psql
psql: FATAL:  database "masi" does not exist
masi$ psql -U postgres
psql: FATAL:  role "postgres" does not exist
masi$ psql postgres
psql (9.4.1)
Type "help" for help.

この問題の一部は、OSXの所有者設定にある可能性があります

masi$ ls -al /Users/
total 0
drwxr-xr-x   7 root      admin  238 Jul  3 09:50 .
drwxr-xr-x  37 root      wheel 1326 Jul  2 19:02 ..
-rw-r--r--   1 root      wheel    0 Sep 10  2014 .localized
drwxrwxrwt   7 root      wheel  238 Apr  9 19:49 Shared
drwxr-xr-x   2 root      admin   68 Jul  3 09:50 postgres
drwxr-xr-x+ 71 masi      staff 2414 Jul  3 09:50 masi

しかし行うことsudo chown -R postgres:staff /Users/postgresは与えるchown: invalid user: ‘postgres:staff’

要するに、これは問題の解決策ではありません。postgresインストールによって提供されるツールを使用して、ユーザーとデータベースを作成します。

適切な設定と出力を取得するには

postgresのインストール後に、データベースシステムに新しいユーザーを追加するための特定のコマンドがあります。initdbの後で、ここで説明するように以下を実行します

createuser --pwprompt postgres
createdb -Opostgres -Eutf8 masi_development
psql -U postgres -W masi_development

常にパスワード要求を回避するには、ここで説明するように3つの選択肢があります


1

私にとってこれはmacOSの解決策でしたpSQLを再インストールしてください

brew install postgres

PostgreSQLサーバーを起動する

pg_ctl -D /usr/local/var/postgres start

DBを初期化する

initdb /usr/local/var/postgres

このコマンドがエラーをスローした場合、古いデータベースファイルにrmして、上記のコマンドを再実行します。

rm -r /usr/local/var/postgres

新しいデータベースを作成する

createdb postgres_test
psql -W postegres_test

このデータベースにログインし、ここにユーザーを作成してログインできます


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.