Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Mam problem ze zmianą hasła dla usera postgres
Z roota oczywiście można się zalogować na postgresa bo to wódz ale jak robię pod zwykłym userem su postgres pyta się mnie o hasło wpisuję hasło które nadałem pod rootem w psql
su postgres psql \password
Zmieniam hasło i teoretycznie powinno grać. No nie gra i jak się chcę zalogować z zwykłego usera daje mi komunikat:
tk@debian:~$ psql -U postgres -W Password for user postgres: psql: FATAL: Ident authentication failed for user "postgres"
Końcówka pliku pg_hba.conf:
# Database administrative login by UNIX sockets local all postgres ident # TYPE DATABASE USER CIDR-ADDRESS METHOD # "local" is for Unix domain socket connections only local all all ident # IPv4 local connections: host all all 127.0.0.1/32 md5 # IPv6 local connections: host all all ::1/128 md5
Ostatnio edytowany przez hello_world (2011-07-26 17:23:58)
Offline
W linijce local all postgres ident powinno być local all postgres md5. Swoją drogą, dziwne, że cię pyta gdy jesteś jako postgres zalogowany. Nie powinno.
edit: przetestowane, działa :) tylko przed zmianą, ustaw hasło przy pomocy alter user postgres with password 'hasło'; będąc zalogowanym jako postgres.
Ostatnio edytowany przez paoolo (2011-07-26 17:48:52)
Offline
Pomogło.
Tyle że mogę się uwierzytelnić jako postgres tyko przez komendę (z usera zwykłego)
psql -U postgres -W
Natomiast po wydaniu polecenia:
su postgres
Pyta mnie o hasło tyle że zawsze pokazuje:
tk@debian:~$ su postgres Hasło: su: Uwierzytelnienie nie powiodło się
Z roota mogę wykonać:
su postgres - wtedy wchodzę na usera postgres
Swoją drogą, dziwne, że cię pyta gdy jesteś jako postgres zalogowany. Nie powinno.
Własnie że nie mogę się na postgresa zalogować. Tylko przez powyższą komendę. Nie pośrednio.
Offline
hello_world napisał(-a):
Natomiast po wydaniu polecenia:
Kod:
su postgresPyta mnie o hasło tyle że zawsze pokazuje:
Kod:
tk@debian:~$ su postgres Hasło: su: Uwierzytelnienie nie powiodło sięZ roota mogę wykonać:
su postgres - wtedy wchodzę na usera postgres
A sudo skonfigurowane ?? :>
Offline
Już sobie poradziłem
Nadaem po prostu hasło dla usera postgres (co się tyczy powloki bash)
i śmiga. Po prostu pomimo że user postgres jest tworzony przy instalacji to (chyba) nie jest to ten sam user który występuje w postgresql.
Więc nadałem hasło pod bashem i pod psql
Offline
@up: tak, postgres jest systemowy user'em i dlatego wpis defaultowo w configu jest ... ident, czyli po tym jako kto jest zalogowany w powłoce, tak się logujesz na psql, i jak jesteś postgres jako user w powłoce to wtedy się zalogujesz bez hasła na psql, zaś z innych kont - nie. A hasło zmieniasz tym zapytaniem sql tylko dla user'a w bazie, nie w systemie.
Offline
Bez żadnego nadawaina hasła dla usera postgres, działa tak:
sudo -u postgres bash
I od razu jesteś na powloce usera postgres.
To by było na tyle
;-)
Offline
@Jacekalex
W Debianie tak nie jest.
W pliku /etc/shadow user postgres ma w miejscu hasła *. Oznaczałoby to że na to konto nie może zalogować się nawet root. Ja natomiast z nieuprzywilejowanego usera nie loguje się na postgresa ale z roota daję radę. O co chodzi w końcu? Nie chciałbym dawać komuś hasła roota tylko dlatego aby mógł się wbić so PostgreSQL.
Offline
hello_world napisał(-a):
@Jacekalex
W Debianie tak nie jest.
W pliku /etc/shadow user postgres ma w miejscu hasła *. Oznaczałoby to że na to konto nie może zalogować się nawet root. Ja natomiast z nieuprzywilejowanego usera nie loguje się na postgresa ale z roota daję radę. O co chodzi w końcu? Nie chciałbym dawać komuś hasła roota tylko dlatego aby mógł się wbić so PostgreSQL.
Postgresa na Debianie nia mam ale:
groupadd postgres -g 70 useradd postgres -u70 -g 70 -s /bin/false
Debian root # sudo -u postgres bash 19:29:25 / Debian postgres # Debian postgres # cat /etc/deb*version wheezy/sid 19:30:11 / Debian postgres # id postgres uid=70(postgres) gid=70(postgres) grupy=70(postgres)
hello_world napisał(-a):
W Debianie tak nie jest.
To bardzo ciekawe spostrzeżenie, bo w Linuxie tak jest xD.
Debian to nie jest Linux?
A wheezy/sid - to oznaczenie wersji Windows 8 czy Windows 9?
To by było na tyle
;-)
Ostatnio edytowany przez Jacekalex (2011-07-29 19:35:12)
Offline
@Jacekalex
Z całym szacunkiem ale ja nie mówię o Gentoo. To zapytanie dotyczy Debiana Wheezy. Nie obchodzi mnie rzeźba w Gentoo.
Ja też potrafie dopisać hasło dla użytkownika postgres pod bashem ale gdzieś mi podświadomość mówi że nie tak chcieli developerzy rozwiązać te problem.
Debian, Gentoo etc.. to Linux jednak emerge, apt to nie to samo.
Offline
Dopóki shellem konta będzie /bin/false na pewno nie uda się zalogować zwykłemu użytkownikowi, daj /bin/bash i się uda. Choć nie bardzo rozumiem dlaczego tak. Co prawda nie pracuję na postgresie tylko na mysql, jednak nigdy nie przyszło mi do głowy logować się na konto mysql.
Offline
@bobycob
Ale użytkownik postgres w /etc/passwd ma powlokę /bin/bash.
Właśnie dlatego nie wiem po co ten user postgres (choć to taki root jak w Mysql)
Owszem w Mysql nie logujesz się do powloki basha tylko bezpośrednio albo na roota albo na zdefiniowanego usera. Natomiast z tego wynikałoby że na postgresa nie powinien się nikt zalogować (przez * w /etc/shadow) ale jednak root się loguje i dopiero z niego można wykonywać rózne administracyjne komendy (selecty etc..)
Nie mogę zajarzyć idei tego rozwiązania.
Offline
hello_world napisał(-a):
Właśnie dlatego nie wiem po co ten user postgres (choć to taki root jak w Mysql)
Jako ten użytkownik działa demon bazy danych.
Offline
azhag napisał(-a):
hello_world napisał(-a):
Właśnie dlatego nie wiem po co ten user postgres (choć to taki root jak w Mysql)
Jako ten użytkownik działa demon bazy danych.
Ja dorzucę linka do dokumentacji, powinno to rozjaśnić nieco sprawę. Warto też następne rozdziały przejrzeć.
Ostatnio edytowany przez ba10 (2011-07-30 08:31:13)
Offline
Chyba po mału zaczynam jarzyć o co chodzi.
Owszem postgres to inaczej postmaster na którego prawach działa PostgreSQL.
W pliku /etc/postgresql/9.0/main/pg_hba.conf zmieniłem opcję połączenia z bazą.
Ustawiłem na:
local all all md5
Później założyłem użytkownika createuser "X" i mam to o co mi chodziło, czyli jak wydam komendę z jakiegokolwiek usera :
psql -d baza -U "X" -W
To mi się bezpośrednio loguje do wybranej bazy.
Takich superuserów można sobie wielu założyć, to definiuje się podczas createuser w shelu lub w psql CREATE ROLE (CREATE USER to ponoć link do CREATE ROLE)
Offline