Пользователь 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
, с другой стороны, должен работать нормально.
Ответ 4
обсуждение и ответ здесь были очень полезны для меня:
psql: FATAL: база данных "<user> " не существует
Ответ 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