Я использую PostgreSQL в Windows. У меня есть обычная установка с одной учетной записью администратора Windows, которую я использовал для установки PostgreSQL и pgAdmin III. Используя pgAdmin III, я создал базу данных, принадлежащую учетной записи postgresql.
У меня есть внешнее приложение, которому требуется доступ к базе данных. Я предоставил этому приложению имя пользователя и пароль postgresql.
Если я не подключаюсь к базе данных через pgAdmin III (в базе данных отображается красный крестик), внешнее приложение не может подключиться к базе данных. Как только я подключаюсь к базе данных через pgAdmin III, внешнее приложение может подключиться. Это проблема, потому что обе программы (PostgreSQL и приложение) работают как службы и должны иметь возможность запускаться и подключаться автоматически при перезапуске сервера (обе службы запускаются правильно при перезапуске сервера).
В отчаянии я даже сохранил пароль при подключении к базе данных через pgAdmin III, надеясь, что соединение будет сохраняться между перезагрузками, но этого не произошло.
Как настроить постоянную доступность базы данных для входа в систему с правильным именем пользователя и паролем? Желательно без сохранения пароля в виде открытого текста.
Ваша проблема звучит очень странно.
Сначала проверьте, работает ли ваш PostgreSQL. Он должен прослушивать один порт, обычно порт 5432. Для этого вы можете использовать netstat
, TCPView
, ProcessExplorer
.
Тогда попробуйте использовать psql
(он должен находиться в каталоге bin PostgreSQL), чтобы вывести список доступных баз данных с помощью -l
переключатель:
[test:~]# psql -l -U postgres
List of databases
Name | Owner | Encoding
------------------------------------+----------+----------
postgres | postgres | LATIN2
template0 | postgres | LATIN2
template1 | postgres | LATIN2
test | postgres | LATIN2
(используйте psql --help
чтобы увидеть различные варианты)
Затем вы можете подключиться к своей базе данных с помощью:
psql -U [user] [database]
Попробуйте это, чтобы узнать, сможете ли вы подключиться к этой базе данных. Может быть, ваш PGAdmin запускает службу PostgreSQL?
Я думаю, что если у вашего внешнего приложения есть проблемы с подключением к базе данных, вы должны связаться с его создателями. Может быть, они сохраняют пароль в каком-нибудь конфигурационном файле или реестре.