Пользователь Postgres не существует?

Я только что установил Postgres и занимался этим и различными настройками в течение 1-2 часов.

Я застрял в неспособно изменить postgres-user

$ su - postgres дает следующую ошибку: su: unknown login: postgres

$ sudo -u postgres psql дает следующую ошибку: sudo: unknown user: postgres

Эти попытки выполняются как обычные пользователи. Попытка их как root имеет точно такие же результаты. Я установил postgres через Homebrew в OS X, и я прочитал инструкции несколько раз.

Ответ 1

psql: регистрирует меня с моим именем пользователя по умолчанию

psql -U postgres: регистрирует меня как пользователя postgres

Судо, похоже, не требуется для меня.

Я использую Postgres.app для моей базы данных OS X postgres. Он устранил головную боль убедиться, что установка работает, и сервер базы данных был запущен должным образом. Посмотрите здесь: http://postgresapp.com

Изменить: кредит для @Erwin Brandstetter для исправления моего использования аргументов.

Ответ 2

В 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

будет работать по умолчанию.

Ответ 3

OS X стремится префикс имен системных учетных записей с помощью "_"; вы не говорите, какую версию OS X вы используете, но по крайней мере в 10.8 и 10.9 пользователь _postgres существует в установке по умолчанию. Обратите внимание, что вы не сможете su для этой учетной записи (кроме как root), так как у нее нет пароля. sudo -u _postgres, с другой стороны, должен работать нормально.

Ответ 5

psql -U postgres

Работал отлично для меня в случае имени db: postgres и username: postgres. Поэтому вам не нужно писать sudo.

И в случае другого db вы можете попробовать

psql -U yourdb postgres

Как указано в помощи Postgres:

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

Ответ 6

Я получаю точно такие же ошибки, как кришах с su - postgres и sudo -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

Чтобы избежать запроса пароля все время, у вас есть три варианта, как описано здесь.

Ответ 7

Решение прост:
войдите в систему как root
и после:

su - postgres

psql