PostgreSQL, Qt, Базы данных

Файл паролей PostgreSQL pgpass в Windows

Для восстановления базы данных из резервной копии используется исполняемый файл сервера pg_restore. Если в настройках сервера выставлена авторизация по имени и паролю, то при использовании утилиты необходимо вводить пароль при каждой операции восстановления БД из бэкапа. Что не подходит в случае пакетной операции, например, или когда операция должна производится без взаимодействия с пользователем в этом ключе. Тогда сервер использует файл паролей pgpass. Он может и отсутствовать. Что тогда делать? Создать и обновлять.

void myClass::updatePgPassFile(QString fileLine)
{
	QString appDataLoc = QStandardPaths::writableLocation(
                QStandardPaths::AppDataLocation);
    QDir appDir(appDataLoc);
    if (!appDir.cdUp()) {
        error(tr("Невозможно перейти в каталог %1 для записи файла "
                 "паролей postgresql")
              .arg(appDataLoc));
        return;
    }
    QString destination = appDir.absolutePath()+"/postgresql";
    appDir = QDir(appDir.absolutePath()+"/postgresql");
    if (!appDir.exists())
        appDir.mkpath(destination);
    QFile file(destination+"/pgpass.conf");
    if (!file.open(QIODevice::ReadWrite)) {
        error(tr("Невозможно воспользоваться файлом паролей postgresql!"));
        return;
    }
    QStringList text = QString(file.readAll()).split("\n");
    text.removeAll({});
    if (!text.contains(fileLine)) {
        QTextStream out(&file);
        out << fileLine << endl;
    }
    file.close();
}

QStandardPaths::writableLocation(QStandardPaths::AppDataLocation) вернет путь к папке вашего приложения для записи неких ваших данных, например,

c:\Users\YourUserName\AppData\Roaming\YourOrganizationName\YourApplicationName\

если вы задали имя организации, если нет, то будет

c:\Users\YourUserName\AppData\Roaming\YourApplicationName\

Но нам нужно на каталог выше, а потом попасть в каталог postgresql, чтобы в итоге получить путь к файлу паролей:

c:\Users\YourUserName\AppData\Roaming\postgresql\pgpass.conf

В каталоге postgresql создаем или обновляем по необходимости файл паролей pgpass.conf.

Пример содержимого файла паролей:

Пример содержимого файла паролей pgpass

Файл паролей PostgreSQL pgpass в Windows: 1 комментарий

Оставьте своё мнение...

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.