Задать вопрос
  • Почему не удается авторизоваться под юзером postgres?

    Melkij
    @Melkij
    DBA для вашего PostgreSQL?
    # DO NOT DISABLE!
    # If you change this first entry you will need to make sure that the
    # database superuser can access the database using some other method.
    # Noninteractive access to all databases is required during automatic
    # maintenance (custom daily cronjobs, replication, and similar tasks).
    #
    # Database administrative login by Unix domain socket
    local   all             postgres                                peer
    
    # TYPE  DATABASE        USER            ADDRESS                 METHOD
    
    # "local" is for Unix domain socket connections only
    local   all             all                                     peer
    # IPv4 local connections:
    host    all             all             127.0.0.1/32            scram-sha-256


    по умолчанию ubuntu создаёт примерно такого смысла pg_hba.conf

    Обращу отдельное внимание, что первой строкой идёт peer авторизация именно для postgres'а и это будет плохая мысль её ломать.

    sudo -u postgres psql
    здесь вы зашли от unix пользователя postgres и запустили psql, имя unix пользователя совпадает с именем пользователя базы - это достаточное условие для прохождения peer аутентификации, вы получили доступ к базе. Это обычный вариант использования суперпользователя базы (dba впрочем чаще делают sudo -iu postgres, т.к. нужен не только psql)

    sudo psql -U postgres -d testdb
    Здесь вы хотите запустить psql от рута и авторизоваться пользователем postgres. "postgres" != "root", поэтому peer аутентификация не пускает авторизацию. То что root это root операционной системы не очень интересует postgresql, делает то что сказано в pg_hba (и pg_ident, но это тема отдельного обсуждения)
    sudo здесь совершенно лишний и не выполняет никакого смысла.

    Изменение
    host all all 127.0.0.1/32 md5
    эффекта не имеет, потому что host тип подключения для TCP/IP подключений, а по-умолчанию psql подключается по unix sock.
    psql -h 127.0.0.1 форсирует подключение по TCP/IP

    задал пароль вручную через passwd, проверил - зашел пользователем postgres через ssh - пускает

    Пользователь ОС не имеет отношения к пользователю внутри СУБД, это разные сущности.
    Пароль postgres пользователя базы можно изменить через psql командой \password

    Тем не менее,
    sudo -u postgres psql
    достаточно для административного доступа. Не работайте от суперпользователя постоянно.
    Ответ написан
    Комментировать
  • Что прочитать, чтобы разобраться в современной архитектуре компьютеров?

    @kirillov01
    Помогаю людям по мере своих возможностей.
    The Elements of Computing Systems, Noam Nisan. (2nd edition)
    Ответ написан
    Комментировать
  • По какой книге учить С?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега C
    Седой и строгий
    Для старта с нуля нет ничего лучше серии Head First. И в частности Дэвид и Дон Гриффитс "Изучаем программирование на C".
    Ответ написан
    Комментировать