Страница 1 из 2

Ошибка запуска PostgreSQL

Добавлено: 26 апр 2014, 06:55
Zike
Здравствуйте. Вопрос такой:
Установил OpenServer на одном компьютере, перенес папку на другой компьютер и теперь при запуске PostgeSQL получаю ошибку:
FATAL: role "USER" does not exist...
в файле конфига постгри настроен доступ для all... Как добраться до скрипта инициализирующего постгри при старте сервера? хочу там попробовать прописать initdb -E 'UTF-8' -U postgres -A trust
Т.е. если я все правильно понимаю то изначально при первом старте PostgreSQL происходит инициализация кластера баз данных от имени пользователя компьютера... перенеся папку на другой компьютер мы уже не можем получить доступ к кластеру от имени другого пользователя... в PostgreSQL есть возможность жестко указать имя пользователя для инициализации кластер к примеру postgres и при последующих запусках тоже использовать это имя... Но для того чтобы это сделать нужен доступ к скриптам инициализации PostgreSQL, а их найти не получается...
Также пробовал в батник перед стартом сервера прописывать следующее:
@SET PGBIN=%realprogdir%\modules\database\PostgreSQL-9.3.4\bin
@SET PATH="%PGBIN%";%PATH%
@SET PGDATA=%realprogdir%\userdata\PostgreSQL-9.3.4
@SET PGDATABASE=postgres
@SET PGUSER=postgres
@SET PGPORT=5432
@SET PGLOCALEDIR=%realprogdir%\modules\database\PostgreSQL-9.3.4\share\locale
@%PGBIN%\initdb.exe -E 'UTF-8' -U postgres -A trust
но почему-то не срабатывает, видимо после этого происходит переинициализация под текущим пользователем

Добавлено: 26 апр 2014, 23:26
Максим
В Open Server инициализация именно так и производится (при первом запуске модуля): initdb -E 'UTF-8' -U postgres -A trust. Так что ищите причину в другом.

Из того что мне приходит на ум - по умолчанию в Open Server прописан такой конфиг в файле авторизации PostgreSQL:

host all all 127.0.0.1/32 trust

т.е. разрешено подключение любого локального пользователя (с адреса 127.0.0.1). Возможно вы подключаетесь по сети с удалённого адреса, т.е. вам нужно дописывать настройки по авторизации. Возможно дело в установленных доступах на самом кластере, но это уже сами смотрите, потом пожалуйста отпишитесь тут как решили вопрос. Больше ничего предположить не могу, с PostgreSQL знаком весьма косвенно.

Добавлено: 27 апр 2014, 07:18
Zike
там как раз прописано:
# IPv4 local connections:
host    all             all             0.0.0.0/0            trust
# IPv6 local connections:
host    all             all             ::1/128                 trust
Попробую удалить папку C:\OpenServer\userdata\PostgreSQL-9.3.4, может пересоздание базы поможет

Добавлено: 27 апр 2014, 20:22
Максим
Как ваши успехи?

Добавлено: 28 апр 2014, 18:04
Zike
Вообщем есть 2 компьютера, на первом (Win 8.1) инициализировал модуль PostgreSQL и создал базу - работает нормально... Перенес папку OpenServer на второй компьютер (WinXP) сервер стартует, в логах Postgree выше описанная ошибка. PgAdmin ничего не видит (phppgadmin забыл глянуть)... удаление папки в userdata и переинициализация модуля ни чего не дало...Стало ясно, что что-то с компом или виндой, что подтвердилось экспериментом на третьем компе (Win7): база созданая на первом компе нормально работает на третьем причем в логах все та же ошибка видимо чисто информативная (PgAdmin и phppgadmin все видят).
Сервер работает в следующей конфигурации:
Apache-2.2.27
PHP-5.4.26
MySQL-5.5.37
PostgreSQL-9.3.4

Добавлено спустя 6 часов 57 минут 31 секунду:
Сейчас проверил работу phppgadmin на проблемном компьютере и он РАБОТАЕТ! Я не сразу заметил, что phppgadmin в Open Server есть, в меню выведен только pgAdmin. Т.е. проблема не в PostgreSQL, с ним все впорядке несмотря на ошибку в логах. Проблема в pgAdmin он не видел сервера и добавление сервера не помогало... после нескольких перезапусков и передергиваний настроек pgAdmin всеж увидел сервер.

Вопрос можно закрыть.

Вообще Open Server мне понравился, пользуюсь недавно, до этого пользовался Денвером но он плохо дружит с новыми операционками да и php 5.4 нет. Вот бы научиться свои модули в Open Server добавлять...

Re:

Добавлено: 29 апр 2016, 20:51
Анастасия
подскажите, пожалуйста, решение, та же проблема:
FATAL: role "Администратор" does not exist

Re: Ошибка запуска PostgreSQL

Добавлено: 30 апр 2016, 00:23
GeekHacker
В общем, почему появляется это сообщение?
Вы работаете под системной учётной записью "Администратор", а в postgresql отсутствует такой пользователь.

В принципе, это ни на что не влияет. Вроде, не влияет. Я уже давно с этим экспериментировал. Но, если не ошибаюсь, всё будет работать и без создания этого пользователя.
Единственное, если вы используете консольные утилиты а-ля createdb,createuser,dropdb и тому подобное, то придётся явно указывать суперпользователя.
createdb -U postgres ...
А так они будут выполняться от пользователя "Администратор". Только его тоже нужно будет сделать суперпользователем.
Но лично я и так предпочитаю работать с консольными утилитами от пользователя postgres.

Но не суть важно.
В общем, чтоб избавиться от мозолящего глаза сообщения в логе и чтоб всё было по феншую, делаем следующее.
Открываем консоль и там выполняем:
createuser -U postgres --interactive --pwprompt Администратор
На предложение указать пароль вводим и подтверждаем пароль.
на вопрос делать ли юзера суперпользователем отвечаем "y" (одна буква и энтер).
И всё.

В принципе, пароль можно не задавать. В таком случае параметр "--pwprompt" можно опустить.

Перезагружаем сервер и наслаждаемся жизнью.

П.С. У вас "Администратор" написан кириллицей. Честно говоря, я не знаю могут ли в postgresql быть "кириллические пользователи".

Re: Ошибка запуска PostgreSQL

Добавлено: 30 апр 2016, 01:15
GeekHacker
Продолжение следует. Серия #2.

Лично у меня команда
createuser -U postgres --interactive --pwprompt Администратор
завершилась ошибкой. Какая-то ошибка последовательности символов для UTF-8. Т.е. таким образом пользователя кириллицей создать нельзя. Во всяком случае, у меня не получилось.

Но мне удалось это дело обойти.
Для этого я открыл psql под пользователем postgres
psql -U postgres
И там выполнил запрос
CREATE ROLE "Администратор" WITH PASSWORD '12345' SUPERUSER CREATEDB CREATEROLE INHERIT LOGIN;
Таким способом пользователь создаётся без проблем.

Только теперь я не уверен будет ли его оно воспринимать нормально при запуске и пропадёт ли первоначальная ошибка. А то у меня он получился какой-то бесполезный.
Например, в той же консоли я его заюзать не смог
psql -U Администратор --dbname test
Выдаёт: Роль Администратор не существует.

В общем, экспериментируйте.

Re: Ошибка запуска PostgreSQL

Добавлено: 30 апр 2016, 10:55
Анастасия
спасибо большое!)

Re: Ошибка запуска PostgreSQL

Добавлено: 11 май 2016, 10:52
larry7
Пользуюсь Win7-64, установил последнюю сборку open-server возникла проблема с постресом
вроде как запускается но не работает! в логах писал (FATAL: role "USER" does not exist)

createuser -U postgres --interactive отработала нормально, благо имя пользователя было латиницей
и ошибка FATAL: role "USER" does not exist... пропала из лога постгреса.
phpinfo() показывает наличие PDO Driver for PostgreSQL
Однако по прежнему возникает ошибка при вызове функции
Call to undefined function pg_connect()
и вызов pgAdmin http://127.0.0.1/openserver/phppgadmin/index.php
дает сообщение Ваша инсталяция PHP не поддерживает PostgreSQL. Вам необходимо пересобрать PHP, используя параметр --with-pgsql для configure.

Переключение на другие версии постгреса не помогает
Впечатление что сборка php действительно сделана без pgsql