#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, чтобы заставить его работать