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
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 …
-
Când rulați
initdb
ca utilizator de sistem de operarepostgres
, rolul inițial de superutilizator DB este șipostgres
– în Postgres standard. Am auzit de sisteme care înclină această regulă … -
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 alergatinitdb -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 …
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.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ă).session_replication_role = 'origin'
. Nu prea folosesc asta, simt.:%s/XPBS/XBPS/g