Rularea serverului PostgreSQL pe Void Linux. După instalare a rulat initdb ca utilizator al sistemului de operare „postgres”:

[user@host]$ sudo -u postgres -i $ initdb -D "/var/lib/postgresql/data" 

Ieșire primită:

crearea directorului / var / lib / postgresql / data … ok crearea subdirectoarelor … ok selectarea implicită a max_connections … 100 selectarea implicită shared_buffers … 128 MB selectarea dinamică partajată implementarea memoriei … posix crearea fișierelor de configurare … ok rularea scriptului bootstrap … ok efectuarea inițializării post-bootstrap … locale: Nu se poate seta LC_MESSAGES la locația implicită: Nu există un astfel de fișier sau director ok sincronizarea datelor pe disc … ok

AVERTISMENT: activarea autentificării „de încredere” pentru conexiunile locale Puteți modifica acest lucru editând pg_hba.conf sau folosind opțiunea -A sau –auth-local și –auth-host, data viitoare rulați initdb.

Succes. Acum puteți porni serverul de baze de date folosind: pg_ctl -D / var / lib / postgresql / data -l start fișier jurnal

Am continuat apoi să creez serviciul, am acordat dreptul de proprietate pentru „postgres” și l-am pornit:

[user@host]$ ln -s /etc/sv/postgresql /var/service [user@host]$ sudo chown postgres: /var/service/postgresql [user@host]$ sudo sv start postgresql [user@host]$ ls -l /var/service/postgresql lrwxrwxrwx 1 postgres postgres 18 nov 2 17:05 /var/service/postgresql -> /etc/sv/postgresql 

Se execută:

[user@host]$ sudo -u postgres psql ... 

îmi va oferi următoarea eroare:

psql: FATAL: role "postgres" does not exist 

Am încercat să acord proprietarul /etc/sv/postgresql la „postgres”, dar fără noroc.

Acestea au fost sursele mele:

https://wiki.voidlinux.eu/PostgreSQL

Eroare PostgreSQL: Fatal: rolul „nume de utilizator” nu există

Nu știu ce să fac în continuare.

EDIT: Am dat peste psql: FATAL: rolul „postgres” nu exista . Nu pot rula psql -l deoarece primesc aceeași eroare, indiferent de utilizatorul pe care îl execut psql.

Comentarii

  • Spuneți-ne ce versiune de Postgres încercați să instalați și de unde ați primit pachetul. Mesajul de eroare este suficient de clar: role "postgres" does not exist: nu există un rol de bază de date numit " postgres ". Este singura instalare Postgres pe aceeași mașină? (Deci, sunteți sigur că vă conectați la instanța potrivită?) Dacă da, întrebarea este: ce rol de bază de date este configurat de instalarea dvs. Nu ' nu știu suficient Void Linux sau managerul de pachete XPBS pentru a spune mai multe. Ar putea fi mai potrivit pentru superutilizator.SE sau unix.SE.
  • Versiunea este postgresql-9.6.10_1. Da, este ' singura instalare a PostgreSQL pe sistemul meu și există o singură instanță a serverului care rulează. Ar trebui să mut întrebarea atunci? Nu ' nu știu …
  • Nu sunt sigur că există experți VOID Linux sau XPBS pe aici … Cheia este să găsești numele Rolul Postgres creat de initdb și apoi conectați-vă cu utilizatorul cu același nume de sistem de operare pentru a primi acces de către " trust " metodă de autentificare. Evident că nu " postgres " (care ar fi valoarea implicită sănătoasă).
  • M-am gândit la fel de mult, dar am ' nu am reușit să găsim rolul. Așa cum am menționat în întrebare, pot ' t psql deloc, așa că pot ' t lista rolurile existente. Există ceva de relevanță scris în fișierul postgresql.conf? Ceva pe care ar trebui să-l caut? Am ' am greped rol și am primit session_replication_role = 'origin'. Nu prea folosesc asta, simt.
  • :%s/XPBS/XBPS/g

Răspunde

Nu este un răspuns complet, dar ia în considerare manualul despre initdb aici :

-U username
--username= username

Selectează numele de utilizator al superutilizatorului bazei de date. Aceasta implică numele utilizatorului efectiv care execută initdb. Chiar nu este important care este numele superutilizatorului, dar s-ar putea alege să păstreze numele obișnuit postgres, chiar dacă numele utilizatorului sistemului de operare este diferit.

Înțeles …

  1. Când rulați initdb ca utilizator de sistem de operare postgres, rolul inițial de superutilizator DB este și postgres – în Postgres standard. Am auzit de sisteme care înclină această regulă …

  2. Ar trebui să puteți forța numele postgres cu --username=postgres pentru superutilizatorul inițial – cu excepția cazului în care pachetul dvs. a încurcat serios toate acestea.

Comentarii

  • Wow , asta m-a îndreptat spre direcția corectă, bine. Știam că am văzut acel steag -U undeva și provenea de aici: stackoverflow.com/questions/50746147/… Aș fi putut citi greșit răspunsul lui Laurenz ' acolo, dar am alergat initdb -U UTF8 -D /var/lib/postgresql/data și ghicesc ce rolul inițial de superutilizator DB a fost. Oricum, am ajuns aproape să-mi prăbușesc întregul sistem din cauza epuizării. O zi destul de productivă. Vă mulțumim pentru dăruirea dvs. Erwin, ajutorul dvs. este mult apreciat.
  • @Jakov: -U UTF8. Uch. Trebuia să fie -E UTF8 presupun? Îmi pare rău pentru ziua pierdută din cauza unei scrisori amestecate. Apoi, din nou: dacă ați fi arătat comanda dvs. actuală la întrebare pentru început, este posibil să vă fi salvat jumătate din zi …

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *