L'utente Postgres non esiste?


92

Ho appena installato Postgres e sto armeggiando con esso e varie configurazioni per 1-2 ore.

Sono bloccato sull'impossibilità di passare all'utente postgres

$ su - postgres restituisce il seguente errore: su: unknown login: postgres

$ sudo -u postgres psql restituisce il seguente errore: sudo: unknown user: postgres

Questi tentativi vengono eseguiti come utente normale. Provarli come root ha gli stessi identici risultati. Ho installato postgres tramite Homebrew su OS X e ho letto le istruzioni più volte.


Stai solo cercando di eseguire psql?
danielM

Ebbene sì, voglio eseguire come postgresutente corretto .
krystah

Su alcune versioni di Mac OS X, con alcuni metodi di installazione, penso che l'utente sia stato creato come postgres_invece. Nota il carattere di sottolineatura finale. Inoltre, sei sicuro che tu (o l'installatore) abbia effettivamente creato l'istanza PostgreSQL e avviato il database?
Craig Ringer

1
Non ero troppo in grado di passare postgresall'utente. Risolto il problema dopo l'installazione del postgresql-serverpacchetto.
sergio 郝海东 冠状 病 六四 事件 法轮功

Risposte:


89

psql: Mi accede con il mio nome utente predefinito

psql -U postgres: Mi accede come utente postgres

Sudo non sembra essere richiesto per me.

Uso Postgres.app per il mio database postgres di OS X. Ha rimosso il problema di assicurarsi che l'installazione funzionasse e che il server del database fosse avviato correttamente. Dai un'occhiata qui: http://postgresapp.com

Modifica: credito a @Erwin Brandstetter per aver corretto il mio uso degli argomenti.


8
Ho installato utilizzando Brew e non ha creato un utente chiamato postgres o _postgres (per quanto posso vedere), quindi questo non è riuscito per me. La soluzione @kangkyu ti spiega e ti guida attraverso i problemi, supponendo che tu non abbia un utente postgres allora: psql postgrese psql -d postgres.
notapatch

21

Da psql --help, quando non hai impostato le opzioni per il nome del database (senza -dopzione) sarebbe il tuo nome utente, se non lo facessi -U, anche il nome utente del database sarebbe il tuo nome utente, ecc.

Ma con il comando initdb(per creare il primo database) non ha il tuo nome utente come nome di database. Ha un database denominato postgres. Il primo database viene sempre creato dal comando initdb quando l'area di archiviazione dei dati viene inizializzata. Questo database si chiama postgres.

Quindi, se non hai un altro database chiamato nome utente, devi farlo psql -d postgresaffinché il comando psql funzioni. E sembra che dia l' -dopzione di default, psql postgresfunziona anche.

Se hai creato un altro database con lo stesso nome del tuo nome utente, (dovrebbe essere fatto con createdb), puoi psqlsolo comandare . E sembra che il primo nome utente del database sia impostato come nome utente della macchina da brew.

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

o,

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

funzionerebbe per impostazione predefinita.


17

OS X tende a far precedere i nomi degli account di sistema da "_"; non dici quale versione di OS X stai utilizzando, ma almeno nella 10.8 e 10.9 l'utente _postgres esiste in un'installazione predefinita. Nota che non sarai in grado di accedere sua questo account (tranne come root), poiché non ha una password. sudo -u _postgres, d'altra parte, dovrebbe funzionare bene.


Grazie! Questa è la risposta che stavo cercando. C'è qualcosa che posso fare per rinominare l'utente in "postgres"? Accedendo come quell'utente _postgres porta a psql che si lamenta che l'utente "_postgres" non esiste. Sto cercando di ripristinare un'istanza postgres pulita con un file di backup da un altro database
Chris Reyes - he-him

1
@ChrisReyes La modifica del nome degli account di sistema potrebbe danneggiare i componenti di sistema che li utilizzano, quindi lo sconsiglio vivamente. Potresti creare un altro account utente con il nome "postgres" e usarlo, ma se ho capito bene (cosa che potrei non avere), quello che stai incontrando è che l'account utente all'interno del database postgres non si chiama _postgres. AIUI i nomi degli account all'interno del DB sono separati dai nomi degli account di sistema, quindi non dovrebbero esserci problemi nell'esecuzione di un'istanza database con l'account di sistema "_postgres" e nell'apertura di quel DB con l'account database "postgres".
Gordon Davisson


4
psql -U postgres

Ha funzionato bene per me in caso di nome db: postgres e nome utente: postgres. Quindi non è necessario scrivere sudo.

E nel caso di un altro db, puoi provare

psql -U yourdb postgres

Come viene fornito nella guida di Postgres:

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

Il mio caso: $ psql -U postgresgenera output psql: FATAL: role "postgres" does not exist, ma psql postgresfunziona.
Frozen Flame

4

Ottengo esattamente gli stessi errori di kryshah con su - postgrese sudo -u postgres psql. La risposta di DanielM dà anche errori.

Emette quando impostazioni errate

Risposta comunque dal commento di 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.

Penso che una parte di questo problema possa essere nelle impostazioni del proprietario in 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

ma il fare sudo chown -R postgres:staff /Users/postgreschown: invalid user: ‘postgres:staff’.

Insomma, non è questa la soluzione al problema. Utilizzare gli strumenti forniti dall'installazione di postgres per creare un utente e un database.

Per ottenere impostazioni e output corretti

Ci sono comandi specifici dopo l'installazione di postgres per aggiungere un nuovo utente al sistema di database. Dopo initdb, eseguire quanto segue come descritto qui

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

Per evitare sempre la richiesta della password, hai tre scelte come descritto qui .


2

Per me questa era la soluzione su macOS Reinstallare il psql

brew install postgres

Avvia il server PostgreSQL

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

Inizializza DB

initdb /usr/local/var/postgres

Se questo comando genera un errore, rm il vecchio file di database e riesegui il comando precedente

rm -r /usr/local/var/postgres

Crea un nuovo database

createdb postgres_test
psql -W postegres_test

Sarai connesso a questo db e potrai creare un utente qui per effettuare il login


0

La soluzione è semplice:
accedi come root
e dopo:

su - postgres

psql
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.