Zaczynam zabawę Postgresem, raczej znam się na MySQL, ale to co niżej dla mnie jest jakieś nielogiczne, albo o czymś nie wiem.
Czemu to się zachowuje tak dziwnie?
Zaczynam zabawę Postgresem, raczej znam się na MySQL, ale to co niżej dla mnie jest jakieś nielogiczne, albo o czymś nie wiem.
Czemu to się zachowuje tak dziwnie?
no i co w tym dziwnego? Daj sobie prawo do uruchomienia i nie będziesz musiał wchodzić przez su
może pgAdmin też nie ma prawa albo jest źle skonfigurowany
Mieszasz trochę usera bazodanowego z userem Uniksowym. Masz w swoim Linuksie użytkownika o nazwie postgres, i masz w bazie danych użytkownika o nazwie postgres. Ale to są dwaj zupełnie niezależni użytkownicy, i mogą mieć inne hasła.
W manualu do psql można przeczytać:
Tak więc jeśli nie podajesz parametrów, to logujesz się z pustym hasłem na taką nazwę użytkownika, jaki jest akurat zalogowany w Linuksie. Użytkownik postgres w bazie ma puste hasło, natomiast użytkownik postgres w Linuksie jak widać jakieś ma.
Czyli:
Przez konsole wchodzi, przez pgAdmin nie
W konsoli logujesz się na linuksowego użytkownika postgres.
Potem wywołujesz psql, które loguje się z domyślną nazwą użytkownika bazy danych - czyli postgres - i pustym hasłem. Wpuszcza.
A tutaj:
Przez polecenie nie wchodzi, przez “su” tak
Wywołujesz psql i podajesz nazwę użytkownika bazy danych - postgres. Wpisujesz hasło, ale ono jest nieprawidłowe, bo użytkownik potgres w bazie danych ma puste hasło.
Następnie logujesz się na linuksowego użytkownika postgres (z jego hasłem) i logujesz się przez pgsql podając nazwę użytkownika bazy danych (również postgres), z pustym hasłem. Wpuszcza.
Nie wiem co się dzieje w pgAdminie, wpisujesz tak jakieś hasło?
Powinieneś utworzyć w bazie jakiegoś usera, a nie logować się na postgres.
A z tego pgAdmina nie łączysz się przypadkiem z innego komputera? Jeżeli tak być może warto by zweryfikować uprawnienia dostępu do bazy w pliku pg_hba.conf
Na użytkowniku postgres “logowanie niedozwolone”, na nowym użytkowniku test1 “Próba zalogowania nie powiodła się” co by się zgadzało z tym co poniżej napisałem.
Dodałem nowego użytkownika “test1”, nową bazę “test1db”, nadałem mu hasło “■■■■+123”, nadałem wszystkie prawa użytkownikowi “test1” dla bazy “test1db”. Ale widzę że i tak nie może się zalogować.
postgres=# create user test1 with password '■■■■+123';
CREATE ROLE
postgres=# create database test1db
postgres-# ;
CREATE DATABASE
postgres=# grant all privileges on database test1db to test1;
GRANT
# psql -U test1 -d test1db --password
Hasło użytkownika test1:
psql: KATASTROFALNY: autoryzacja ident nie powiodła się dla użytkownika "test1"
Gdzie robię błąd?
Baza i pgAdmin jest na tym samym komputerze, na lokalnym, Poniżej pg_hba.conf.
# 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 ident
# IPv6 local connections:
host all all ::1/128 ident
Możesz spróbować zmienić ‘ident’ na ‘md5’, zrestartować serwer i powinno pomóc.
Ok, wszystko gra, dzięki za pomoc.