Не удается получить доступ к PostgreSQL

#c #postgresql

#c #postgresql

Вопрос:

Я не могу получить доступ к базе данных с C каждый раз, когда он просто выдает ошибку: FATAL: Ident authentication failed for user "testuser"

Я пытался:

Переустановка postgresql11 на postgresql12 Создание пользователя Создание базы данных с владельцем testuser Изменение локального хоста pg_hba.conf с однорангового на md5 Многократная смена пароля пользователя Перезагрузка компьютера Перезапуск службы

вот код:

 #include "gtest/gtest.h"
#include <iostream>
#include <pqxx/pqxx>

using std::cin;
using std::cout;
using std::cerr;
using namespace std;
using namespace pqxx;

int main() {
    try {
        connection C("dbname = relay user = testuser password = 1234 hostaddr = 127.0.0.1 port =             5432");
        if (C.is_open()) 
            cout << "Opened database successfully: " << C.dbname() << endl;
        else {
            cout << "Can't open database" << endl;
            return 1;
        }

        C.close();
    } catch (const std::exception amp;e) {
             cerr << e.what() << std::endl;
             return 1;
    }
}

TEST(postgreDB_test_trivial, trivial_test) {
     main();
}
  

Я разрешил даже доступ брандмауэра к портам

У меня больше нет идей о том, как это решить.

Комментарии:

1. Пожалуйста, добавьте часть ваших правил доступа pg_hba.conf с testuser помощью.

2. Вы бы не получили эту ошибку, если бы действительно использовали md5. Что бы вы ни пытались сделать с pg_hba.conf, это не увенчалось успехом. Убедитесь, что вы отредактировали правильную строку правильного файла, и после этого перезапустите сервер. И покажите нам все раскомментированные строки pg_hba.conf

3. В дополнение к вышесказанному я бы использовал host вместо hostaddr . Также не уверен, ошибка вырезания / вставки или нет, но не помешало бы избавиться от этой длинной пустой части в port= .

Ответ №1:

Проблема заключалась в том, что удаление Postgres11 и установка Postgres12 оставили pg_hba.conf с другими настройками после перезапуска службы, поэтому мне нужно было изменить все на trust в pg_hba.conf, чтобы заставить его работать