psql: FATAL: rol postgres bestaat niet

Ik ben een postgres-beginner.

Ik heb de postgres.app voor mac geïnstalleerd. Ik was aan het spelen met de psql-commando’s en ik liet per ongeluk de postgres-database vallen. Ik weet niet wat erin zat.

Ik werk momenteel aan een zelfstudie: http://www.rosslaird.com /blog/project-bouwen-met-mezzanine/

En ik zit vast bij sudo -u postgres psql postgres

FOUTBERICHT: psql: FATAL: role "postgres" does not exist

$ welke psql

/Applications/Postgres.app/Contents/MacOS/bin/psql

Dit is wat wordt afgedrukt uit psql -l

                                List of databases
    Name    |   Owner    | Encoding | Collate | Ctype |     Access privileges     
------------+------------+----------+---------+-------+---------------------------
 user       | user       | UTF8     | en_US   | en_US | 
 template0  | user       | UTF8     | en_US   | en_US | =c/user                  +
            |            |          |         |       | user      =CTc/user      
 template1  | user       | UTF8     | en_US   | en_US | =c/user                  +
            |            |          |         |       | user      =CTc/user      
(3 rows)

Dus wat zijn de stappen die ik moet nemen? Alles met betrekking tot psql verwijderen en alles opnieuw installeren?

Bedankt voor de hulp jongens!


Antwoord 1, autoriteit 100%

OPMERKING: als je postgres hebt geïnstalleerd met homebrew, bekijk dan de opmerking van @user3402754 hieronder.

Merk op dat de foutmelding NIET spreekt over een ontbrekende database, maar over een ontbrekende rol. Later in het inlogproces kan het ook struikelen over de ontbrekende database.

Maar de eerste stap is om de ontbrekende rol te controleren: Wat is de uitvoer binnen psql van het commando \du ? Op mijn Ubuntu-systeem ziet de relevante regel er als volgt uit:

                              List of roles
 Role name |            Attributes             | Member of 
-----------+-----------------------------------+-----------
 postgres  | Superuser, Create role, Create DB | {}        

Als er niet ten minste één rol is met SUPERUSER, dan heb je een probleem 🙂

Als er een is, kun je die gebruiken om in te loggen. En kijkend naar de uitvoer van uw \l-opdracht: de machtigingen voor user op de template0– en template1-databases zijn hetzelfde als op mijn Ubuntu-systeem voor de supergebruiker postgres. Dus ik denk dat je setup eenvoudig user als supergebruiker gebruikt. Dus je zou dit commando kunnen proberen om in te loggen:

sudo -u user psql user

Als user echt de DB-supergebruiker is, kunt u een andere DB-supergebruiker en een privé, lege database voor hem maken:

CREATE USER postgres SUPERUSER;
CREATE DATABASE postgres WITH OWNER postgres;

Maar aangezien uw postgres.app-configuratie dit niet lijkt te doen, zou u dit ook niet moeten doen. Pas de tutorial eenvoudig aan.


Antwoord 2, autoriteit 55%

De sleutel is “Ik heb de postgres.app voor mac geïnstalleerd.” Deze toepassing stelt de lokale PostgreSQL-installatie in met een database-supergebruiker wiens rolnaam hetzelfde is als uw (korte) aanmeldingsnaam.

Wanneer Postgres.app voor het eerst opstart, wordt de $USER-database gemaakt,
wat de standaarddatabase is voor psql als er geen is opgegeven. De
standaardgebruiker is $USER, zonder wachtwoord.

Sommige scripts (bijv. een databaseback-up gemaakt met pgdump op een Linux-systeem) en tutorials gaan ervan uit dat de superuser de traditionele rolnaam postgres heeft.

U kunt uw lokale installatie er wat traditioneler uit laten zien en deze problemen voorkomen door eenmalig te doen:

/Applications/Postgres.app/Contents/Versions/9.*/bin/createuser -s postgres

waardoor die FATAL: rol “postgres” bestaat niet verdwijnen.


Antwoord 3, autoriteit 52%

Voor MAC:

  1. Installeer Homebrew
  2. brew install postgres
  3. initdb /usr/local/var/postgres
  4. /usr/local/Cellar/postgresql/<version>/bin/createuser -s postgres of /usr/local/opt/postgres/bin/createuser -s postgres die alleen de nieuwste versie zal gebruiken.
  5. start postgres-server handmatig: pg_ctl -D /usr/local/var/postgres start

Server starten bij opstarten

  • mkdir -p ~/Library/LaunchAgents
  • ln -sfv /usr/local/opt/postgresql/*.plist ~/Library/LaunchAgents
  • launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

Nu is het ingesteld, log in met psql -U postgres -h localhost of gebruik PgAdmin voor GUI.

Standaard heeft gebruiker postgres geen inlogwachtwoord.

Kijk op deze site voor meer artikelen zoals deze: https://medium. com/@Nithanaroy/installing-postgres-on-mac-18f017c5d3f7


Antwoord 4, autoriteit 12%

createuser postgres --interactive

of maak een superuser postgresl alleen met

createuser postgres -s

Antwoord 5, autoriteit 8%

Dit gebeurt wanneer u initdb uitvoert met een gebruiker wiens ID niet postgres is, zonder de gebruikersnaam postgres op te geven met --username=postgres of -U postgres.

Het databasecluster wordt dan gemaakt met de gebruikersaccount van het systeem die u hebt gebruikt om initdb uit te voeren, en het krijgt superuser-machtigingen.

Om het op te lossen, maakt u eenvoudig een nieuwe gebruiker met de naam postgres met de optie --superuser met behulp van het hulpprogramma createuser dat bij Postgres wordt geleverd. Het hulpprogramma is te vinden in de bin-directory van Postgres. bijv.

createuser --superuser postgres

Als je een aangepaste hostnaam of poort hebt, zorg er dan voor dat je de juiste opties instelt .

Vergeet niet het andere gebruikersaccount te verwijderen dat voor u is aangemaakt door initdb.


Antwoord 6, autoriteit 7%

Als je postgres van brew hebt geïnstalleerd, voer dit dan uit in je terminal:

/usr/local/opt/postgres/bin/createuser -s postgres

Antwoord 7, autoriteit 4%

Eerst moet u een gebruiker maken:

sudo -u postgres createuser --superuser $USER

Nadat u een database hebt gemaakt:

sudo -u postgres createdb $USER

Wijzig $USER in uw systeemgebruikersnaam.

U kunt de volledige oplossing hier.


Antwoord 8, autoriteit 4%

Ik moest $PGUSER uitschakelen:

$ unset PGUSER
$ createuser -s postgres

Antwoord 9, autoriteit 3%

Voor mij werkte deze code:

/Applications/Postgres.app/Contents/Versions/9.4/bin/createuser -s postgres

het kwam hier vandaan:
http://talk.growstuff.org/t/fatal-role- postgres-does-not-exist/216/4


Antwoord 10, autoriteit 2%

Als u dit op de opdrachtregel uitvoert, is dit opgelost

/Applications/Postgres.app/Contents/Versions/9.4/bin/createdb <Mac OSX Username Here>


Antwoord 11

Als u docker gebruikt, zorg er dan voor dat u NIET POSTGRES_USER=something_else gebruikt, aangezien deze variabele door de standaardafbeelding wordt gebruikt om de naam van de PostgreSQL-beheerdersgebruiker te kennen (standaard als postgres).

In mijn geval gebruikte ik deze variabele met de bedoeling een andere gebruiker voor mijn specifieke database in te stellen, maar uiteindelijk veranderde het natuurlijk de belangrijkste PostgreSQL-gebruiker.


Antwoord 12

Als je postgres van Brew hebt geïnstalleerd en een Apple Silicon (M1) mac gebruikt, voer je dit uit in je terminal:

/opt/homebrew/opt/postgresql/bin/createuser -s postgres

Als je een Intel (x86) mac gebruikt, voer je dit uit in je terminal:

/usr/local/opt/postgres/bin/createuser -s postgres

Antwoord 13

Dit is de enige die het voor mij heeft opgelost :

createuser -s -U $USER

Antwoord 14

Het verwijderen van de postgres database doet er niet echt toe. Deze database is in eerste instantie leeg en het doel is gewoon dat de postgres-gebruiker een soort “thuis” heeft om verbinding mee te maken, mocht hij die nodig hebben.

Toch kunt u het opnieuw maken met het SQL-commando CREATE DATABASE postgres;

Houd er rekening mee dat de tutorial die in de vraag wordt genoemd, niet is geschreven met postgres.app in gedachten.
In tegenstelling tot PostgreSQL voor Unix in het algemeen, probeert postgres.app eruit te zien als een normale applicatie in tegenstelling tot een service die zou worden uitgevoerd door een toegewijde postgres-gebruiker met andere privileges dan uw normale gebruiker. postgres.app wordt uitgevoerd en beheerd door uw eigen account.

Dus in plaats van dit commando: sudo -u postgres psql -U postgres, zou het meer in de geest van postgres.app zijn om gewoon het volgende uit te geven: psql, dat maakt automatisch verbinding met een database die overeenkomt met de naam van uw gebruikers, en met een db-account met dezelfde naam die toevallig superuser is, dus het kan alles per machtiging doen.


Antwoord 15

Voor wat het waard is, ik heb ubuntu en veel pakketten geïnstalleerd en het ging ermee in conflict.

Voor mij was het juiste antwoord:

sudo -i -u postgres-xc
psql

Antwoord 16

Dit artikel heeft me geholpen hetzelfde probleem op te lossen psql: FATAL: role “postgres” does not exist.

Ik gebruik mac, dus ik heb dit commando in terminal ingevoerd:

createuser -s postgres

En het werkte voor mij.


Antwoord 17

Ik denk niet dat sudo hier nodig is omdat psql -l een lijst met databases retourneert. Dit vertelt me ​​dat initdb werd uitgevoerd onder de huidige gebruiker van de gebruiker, niet onder de postgres-gebruiker.

Je kunt gewoon:

psql

En ga verder met de tutorial.

Ik zou de algemene punten van A.H willen voorstellen om de postgres-gebruiker en db te maken, omdat veel toepassingen dit kunnen verwachten.

Een korte uitleg:

PostgreSQL werkt niet met beheerderstoegang tot het besturingssysteem. In plaats daarvan werkt het met een gewone gebruiker en om peer-authenticatie te ondersteunen (het besturingssysteem vragen wie verbinding probeert te maken) maakt het een gebruiker en db aan met de gebruiker die het initialisatieproces uitvoert. In dit geval was het uw normale gebruiker.


Antwoord 18

Op het Ubuntu-systeem heb ik de PostgreSQL verwijderd en opnieuw geïnstalleerd. Alle databases worden hersteld.
Dit loste het probleem voor mij op.

Advies – Zorg voor een veilige back-up van de databases.


Antwoord 19

Ik liep vast bij dit probleem nadat ik de dag ervoor brew services stop postgresql had uitgevoerd.
De volgende dag: brew services start postgresql werkten niet. Dit komt omdat zoals wordt getoond wanneer u installeert met behulp van homebrew. postgresql gebruikt een launchd … die wordt geladen wanneer uw computer wordt ingeschakeld.

resolutie:
brew services start postgresql
Start uw computer opnieuw op.


Antwoord 20

Het \du commando geeft terug:

Rolnaam = postgres@implicit_files

En dat commando postgres=# \password postgres retourneert fout:

FOUT: rol “postgres” bestaat niet.

Maar dat postgres=# \password postgres@implicit_files goed werkt.

Ook na sudo -u postgres createuser -s postgres werkt de eerste variant ook.


Antwoord 21

We hebben een database met de naam postgres na brew install postgresql en brew services start postgresql. Dus we kunnen psql standaard zo openen.

psql postgres

En dan kunnen we gebruikers met elke naam zoals deze toevoegen in die psql-console.

CREATE USER postgres

En als we een supergebruiker willen, kunnen we aan het einde SUPERUSER toevoegen.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

3 × 2 =

Other episodes