Uwierzytelnianie równorzędne nie powiodło się dla użytkownika ze wszystkimi uprawnieniami w Postgres 9.5

14

Chcę utworzyć użytkownika, który ma dostęp tylko do określonej bazy danych. Powinien jednak mieć wszystkie uprawnienia. Używam Postgresql 9.5 na Ubuntu 14.04. Przede wszystkim tworzę nowego użytkownika:

$createuser --interactive joe
  Shall the new role be a superuser? (y/n) n
  Shall the new role be allowed to create databases? (y/n) n
  Shall the new role be allowed to create more new roles? (y/n) n

Następnie tworzę nową bazę danych z właścicielem Joe:

 $sudo -u postgres psql 
 $CREATE DATABASE myDB OWNER joe;
 $GRANT ALL ON DATABASE myDB TO joe;

Następnie próbuję połączyć się z użytkownikiem Joe, aby połączyć się z moją bazą danych myDB:

$psql myDB -U joe
psql: FATAL:  Peer authentication failed for user "joe" 

Co mam teraz zrobić?

Qeychon
źródło
4
To nie jest poza tematem. ponieważ konfigurowanie oprogramowania w Ubuntu jest tematem
Anwar
Czy Twój problem został rozwiązany?
Anwar

Odpowiedzi:

16
  1. Otwórz /etc/postgresql/9.5/main/pg_hba.confz dostępem roota

     sudo nano /etc/postgresql/9.5/main/pg_hba.conf
    
  2. Zmień peerna md5w tych wierszach.

    Przed zmianą

    # "local" is for Unix domain socket connections only
    local   all             all                                     peer
    # IPv4 local connections:
    host    all             all             127.0.0.1/32            peer
    # IPv6 local connections:
    host    all             all             ::1/128                 peer
    

    Po twojej zmianie

    # "local" is for Unix domain socket connections only
    local   all             all                                     md5
    # IPv4 local connections:
    host    all             all             127.0.0.1/32            md5
    # IPv6 local connections:
    host    all             all             ::1/128                 md5
    
  3. Zapisz plik, naciskając Ctrl- O. Wyjdź z nano za pomocą Ctrl-X

  4. Uruchom ponownie postgresql przy użyciu

    sudo service postgresql restart
    
Anwar
źródło
1
dziękuję, musiałem zmienić lokalny peer linii na md5, po czym mogłem pomyślnie się zalogować.
Qeychon
Aktualizacja dla dowolnej wersji :, aby sprawdzić plik conf:sudo -u postgres psql -c "SHOW config_file"
Peter Krauss
Moje pokazywały ident zamiast rówieśnika host all all 127.0.0.1/32 ident,host all all ::1/128 ident
Joseph K.