PostgreSQL - "dziwny" brak dostępu do bazy danych


(ra-v) #1

Zaczynam zabawę Postgresem, raczej znam się na MySQL, ale to co niżej dla mnie jest jakieś nielogiczne, albo o czymś nie wiem.

  1. Przez konsole wchodzi, przez pgAdmin nie

  2. Przez polecenie nie wchodzi, przez "su" tak

Czemu to się zachowuje tak dziwnie?


(pain3hp) #2

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


(Grzegorz Olszewski) #3

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.


(Airborn) #4

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


(ra-v) #5

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 "dupa+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 'dupa+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

(Airborn) #6

Możesz spróbować zmienić 'ident' na 'md5', zrestartować serwer i powinno pomóc.


(ra-v) #7

Ok, wszystko gra, dzięki za pomoc.