Ошибка аутентификации в одноранговой сети для пользователя со всеми привилегиями в Postgres 9.5

14

Я хочу создать пользователя, который имеет доступ только к указанной базе данных. Тем не менее, он должен иметь все разрешения. Я использую Postgresql 9.5 на Ubuntu 14.04. Итак, прежде всего, я создаю нового пользователя:

$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

Далее я создаю новую базу данных с владельцем Джо:

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

После этого я пытаюсь соединиться с пользователем joe для подключения к моей базе данных myDB:

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

Что мне делать дальше?

Qeychon
источник
4
Это не вне темы. потому что настройка программного обеспечения в Ubuntu идет по теме
Anwar
Ваша проблема решена?
Анвар

Ответы:

16
  1. Открыть /etc/postgresql/9.5/main/pg_hba.confс правами root

     sudo nano /etc/postgresql/9.5/main/pg_hba.conf
    
  2. Изменение peerв md5этих строках.

    Перед сменой

    # "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
    

    После вашего изменения

    # "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. Сохраните файл нажатием Ctrl- O. Выход из нано с Ctrl-X

  4. Перезапустите postgresql, используя

    sudo service postgresql restart
    
Анвар
источник
1
спасибо, мне пришлось сменить локальный одноранговый канал на md5, после этого я мог успешно войти в систему.
Qeychon
Обновление для любой версии :, чтобы проверить файл конфигурации:sudo -u postgres psql -c "SHOW config_file"
Питер Краусс
Мои показывали идентичные вместо сверстников host all all 127.0.0.1/32 ident,host all all ::1/128 ident
Джозеф К.