Установка PostgreSQL 8.3 на Windows XP

Изображение corochoone

Маленькое предисловие

В общем эта дока написана не для поощрения тех людей, которые упорно не желают читать нормальную документацию, поставляемую с сервером, а скорее, чтобы иметь возможность отсылать к этой доке, а также с целью популяризации PostgreSQL

Честно говоря, поднадоело отвечать на одни и те же вопросы. Проблема в том, что надо хотя бы обладать какими-то базовыми знаниями в администрировании PostgreSQL, чтобы устанавливать сервер PostgreSQL. Да, конечно, может повезти и установка прокатит "на ура", но что делать, если нет? Как уже не раз говорилось: "Если ничего не получается - прочтите наконец документацию". Но согласно другой поговорке "доки читают только ламеры", поэтому одни и те же вопросы задают и снова и снова. Мало того, не разобравшись начинают кричать, что продукт плох, что не работает!

Ещё хочется заметить, что для PostgreSQL есть прекрасная платформа - Linux. В большинстве дистрибутивов, PostgreSQL устанавливается одной единственной командой, а также производится его автоматическая начальная настройка и запуск. Но почему-то многие стремятся работать именно в Windows.

Итак! Страдальцами Windows посвящается....



Файловые системы Windows


Поскольку многие продолжают работать на файловой системе FAT32, которая в отличие от NTFS не поддерживает атрибуты, связаные с правами доступа к файлам и каталогам, процесс установки PostgreSQL фактически разбивается на два вида: установка для FAT32 и установка для NTFS. Однако есть и общая часть установки, так что сперва начнём с неё, затем перейдём к NTFS, как с наиболее лёгкому варианту и наконец закончим FAT32 и проблемами связанными с установкой на данный тип файловой системы.



Общая часть


Берём архив с установкой PostgreSQL. Я взял версию 8.3 прямо с этой странички. Распаковываем во временный каталог. Запускаем файл setup.bat. Далее картинки:

Как и нарисовано, выбираем Russian (русский язык установки) и тыкаем "Start"

Тыкаем "Далее"

Как видите, даже по-русски написано где что читать в случае возникновения проблем. Но как уже и говорилось ранее "доки у нас читают только ламеры". Тыкаем "Далее"

Я выбрал к установке то, что отмечено на рисунке. Возможно вы захотите, что-то дополнить или изменить. Тыкаем "Далее"

Там где поле ввода "Домен" на самом деле никакой не домен, а имя моей машины, так что не пугайтесь. Также отмечаю, что пользователь postgres в этой форме ввода - это учётная запись пользователя в операционной системе Windows. Именно от этого пользователя (с его правами) будет производится запуск сервера PostgreSQL. Там это всё написано в форме. Читайте. Тыкаем "Далее".

Размеется хотим. Тыкаем "Да".

Я не знаю какими критериями руководствуется инсталлятор при определении сложности введённого пароля. Да мне в принципе и чихать на это. Поэтому просто жму "Нет" и продолжаем. Вот собственно мы и добрались до окончания общей части.



Установка на NTFS


Для NTFS вообще всё элементарно.

Вот здесь мы вводим пароль для пользователя postgres в базе данных. Это не учётная запись postgres в операционной системе Windows - это пользователь базы данных. К тому же пользователь, имеющий привелегии суперпользователя в PostgreSQL. Не путайте их. Делаем как на рисунке (со своим паролем естественно) и тыкаем "Далее". Кстати подумайте - может вам целесообразней выбрать не кодировку Windows - 1251, а например UTF-8? Решать, конечно, вам.

Получаем предупреждающее сообщение

Вы всё поняли? Вопросов типа "Почему у меня не коннектится с другого компа по сети?" надеюсь теперь не будет? Жмём "ОК". Получаем следующее окно:

Если не знаете что это - оставьте как на данной картинке. Жмём "Далее"

Если вы точно не знаете какие расширения вам нужны, отметьте всё как на картинке. Места займёт немного, зато будете уверены, что ничего не забыли. Жмём "Далее":

Итак, всё готов к установке, жмём "Далее". На экране ползёт индикатор прогресса установки и всякие сообщения по ходу установки и наконец появляется финальное сообщение:

Решите сами, хотите ли вы запускать "Stack Builder" и жмите "Завершить", Это ВСЁ!!!!

Можете зайти в ваше меню Пуск->Программы, отыскать там меню PostgreSQL и запустить pgAdminIII для работы с вашим сервером PostgreSQL

.

Установка на FAT32


При установке на FAT32, инсталлятор далее матерно выругается:

Внимательно почитайте и запомните что оно там написало. Впрочем, вы всегда можете посмотреть эту картинку здесь и освежить память. А у нас как у Чернышевского встаёт вопрос "Что делать?" В смысле дальше? А делать нужно следующее. Возвращаемся кнопкой "Назад" на предыдущую форму и приводим её вот в такой вид:

После чего тыкаем "Далее" и получаем такое сообщение:

Особо поблагодарим переводчиков за слово "Директория". Мало того, что Билл-дебил придумал термин "Папка" вместо "Каталог", так некоторые ещё употребляют слово "Директория". И ладно бы в своём разговоре, но вот и до переводов дошли.

Итак, конечно, мы уверены, ведь по другому нам не поставится. Жмём "Да"

Нам радостно сообщили, что всё готово к установке. Жмём "Далее"

На экране ползёт индикатор прогресса установки и всякие сообщения по ходу установки и наконец появляется финальное сообщение:

Снимаем галочку про "Stack Builder", нам сейчас не до него и жмём "Завершить"

Что мы сейчас имеем? Сервер стоит, но он неработоспособен, потому что база данных не инициализирована. Как нам и писало на одной из предыдущих картинок, необходимо вручную выполнить эту инициализацию. Для этого тыкаете в меню и ищите где там у вас PostgreSQL. Среди пунктов меню будет "Командная строка". Тыкаете. В появившемся чёрном окне набираете:

initdb -D "C:\Program Files\PostgreSQL\8.3\Data"

Разумеется, если вы устанавливали PostgreSQL в другой каталог, то нужно указать его.

Далее вы увидите на экране такие строки:

В общем-то теперь база данных инициализирована и как написано в конце, вы можете запустить её одной из означенных команд. Более того, сервер действительно запустится. Вроде бы можно работать? А вот и нет!

По хорошему надо бы запускать сервер PostgreSQL как сервис, но нас же уже предупреждали о том, что сделать это для FAT32 не получится. Однако попробуем!

Итак, идём в "Панель управления", далее "Администрирование", далее "Службы". В открывшемся окне находим PostgreSQL. У меня оно выгдят так:

Как видите, там где состояние должно быть "работает" у нас пусто - служба (сервис) не запущена

Щёлкаем по строке и в появившемся диалоговом окне пытаемся запустить данную службу, нажав "Запуск". Видим, что система пытается запуститься:

но в итоге ничего не выходит и мы получаем такое сообщение:

Вот после этого, горе-виндозники заламывают руки, плюются и кричат, что ничего не работает. Люди более грамотные идут в раздел "Панель управления", "Администрирование", "Просмотр событий" и в журнале "Приложения" видят странное сообщение от службы PostgreSQL:

Для тех, кто знаком с администрированием PostgreSQL уже начинает брезжить догадка. Тем не менее, мы теперь оставим эту догадку вылёживаться и вернёмся к ручному запуску сервера, как нам советовали в чёрном окошке. Итак, запускаем командную строку из меню PostgreSQL и набираем:

pg_ctl -D "C:\Program Files\PostgreSQL\8.3\Data" -l logfile start
И получаем
server started

Вроде бы сервер работает, что ещё надо? Обрадовано запускаем pgAdminIII из меню PostgreSQL и пытаемся коннектится к базе. Нам выдаёт запрос пароля пользователя postgres, мы вводим тот, что вводили ранее и обламываемся с сообщением, угадайте каким? Правильно:

role 'postgres' does not exists

Теперь наша догадка превращается в уверенность. Просто напросто, инсталлятор не создал суперпользователя postgres в базе данных. Заходим с командной строки:

psql -d template1

Вход получается, ведь мы заходим от системной учётной записи postgres, а не от пользователя postgres в базе данных!

Далее набираем:

# CREATE USER postgres WITH SUPERUSER ENCRYPTED PASSWORD 'пароль';

Вместо слова "пароль" укажите пароль для пользователя postgres в базе данных

И вот! Мы получаем сообщение:

CREATED ROLE

Как говорится - тут и сказки конец! Можете попробовать запустить pgAdminIII из меню PostgreSQL и подключится к базе с только что введённым паролем - РАБОТАЕТ!!!!!!!!!!!!

Выходим из psql:

# \q

В командой строке набираем команду останова сервера:

pg_ctl -D "C:\Program Files\PostgreSQL\8.3\Data" -l logfile stop

А теперь преспокойно идёте в "Панель управления", "Администрирование", "Службы", находите там PostgreSQL и запускаете эту службу! И всё работает и будет работать и после перезагрузки! Делов-то!



В заключение

Как оказалось, в данной статье рассмотрены не все так сказать "грабли", на которые можно наступить при установке. Поэтому не забудьте прочитать раздел "Проблемы при установке" в моём специальном FAQ: http://postgresql.ru.net/docs/extented_FAQ.html.

Авторские права


Автором данного документа является: Виктор Вислобоков
Первоначальное местоположение данного документа: http://postgresql.ru.net/docs/win_inst.html
Разрешается свободное использование данного документа в электронном виде, копирование, распространение, размещение на web-сайтах при условии обязательного сохранения данного раздела об авторских правах, а также при условии открытого и бесплатного доступа к этому документу. Любое коммерческое использование материалов данного документа, а также использование в печатных изданиях разрешается только с письменного согласия автора.

ВложениеРазмер
pgi1.jpg33.95 kb
pgi2.jpg25.09 kb
pgi3.jpg48.86 kb
pgi4.jpg45.78 kb
pgi5.jpg38.4 kb
pgi6.jpg10.79 kb
pgi7.jpg10.31 kb
pgi8.jpg21.72 kb
pgi9.jpg36.88 kb
pgi10.jpg25.14 kb
pgi11.jpg18.76 kb
pgi12.jpg37.86 kb
pgi13.jpg77.5 kb
pgi14.jpg8.08 kb
pgi15.jpg38.88 kb
pgi16.jpg17.97 kb
pgi17.jpg25.64 kb
pgi18.jpg39.27 kb
pgi19.jpg25.12 kb
pgi20.jpg25.17 kb
pgi21.jpg48.74 kb

Комментарии

Опции просмотра комментариев

Выберите предпочитаемый вами способ показа комментариев и нажмите "Сохранить настройки" для активации изменений.

А еще можно

А еще можно набрать initdb --help
В нем на Русском языке описаны опции
-U, --username=NAME имя администратора базы данных
-W, --pwprompt запросить пароль для нового администратора

Каталог установки

Решил познакомиться с Postgresql. Нашел Вашу статью. И столкнулся с такой траблой - диск с: у меня под FAT. Как указать другой путь для установки, в опциях инсталятора ничего не нашел :-(

Внимательность

Внимательность ты где? Нашлась кнопка. Всем спасибо)
Правда, всеравно поставил пакет от Denver.

Ошбика запуска службы.

У меня при запуске службы вылазиет вот эта ошбка со службой но я устанавливал на NTFS. Утсанавливал postgresql-8.3.3-2.1C. При "Data" -l logfile start" пишет что : Data" -l logfile start не является внутренней или внешней командой, исполняемой программой или пакетным файлом. При этом 5 процессов postgres.exe в диспетчере задач работают. Что это значит?

Ошбика запуска службы.

часто проблема запуска службы связана с неаккуратностью инсталятора.
Типичное сообщение будет подобно "приложение не является программой Win32" или что-либо подобное. Для Postgres выдается ошибка 193.
Лечится простым приемом:
- В реестре нужно найти запись об этом сервисе
- найти параметр ImagePath
- в нем путь к программе
C:/Program Files/PostgresPlus/8.4SS/bin/pg_ctl.exe runservice -N "postgresql-8.4" -D "E:/PGData" -w
просто поставить в кавычки
"C:/Program Files/PostgresPlus/8.4SS/bin/pg_ctl.exe" runservice -N "postgresql-8.4" -D "E:/PGData" -w

пробел внутри пути "Program File" иногда рассматривается как разделитель

проблемы с установкой

при установке postgreSQL на NTFS появляется ошибка
не удалось прочитать конфигурационный файл "....\8.3\data\postgresql.conf
а при установке на FAT проблемы с инициализацией в ручную. подскажите что можно сделать пожалуйста

Почти та же проблема

Не могу запустить сервсис постгрес, в системном логе написано, что приложение не смогло найти файл postgresql.conf. Ищу решение

всё просто

Была такая же проблема.
Т.к. ставил СУБД дома для ознакомления, то решил особо не заморачиваться с безопасностью.
Дал пользователю postgres полные права на папку PostgreSQL (в которую установлена СУДБ). Не помогло!!!
И очень был удивлен, проверив права на сам файл postgresql.conf
Он не наследовал права папки!!!
Далее, в принципе, можно было бы и не писать. Добавление полных прав на этот файл решило проблему!
А вообще-то рекомендую более тщательно отнестись к раздаче прав.
Во всяком случае не спешите делать пользователя postgres админом, если конечно не хотите в дальнейшем иметь проблемы с безопасностью при работе с базой, в которой реализован механизм работы с файловой системой (а это PostgreSQL умеет).

нюансы (тм)

Нюансы(тм) установки под win32:
1) нужен юзер postgres, находящийся в админской группе
2) нужно в свойстве "безопасность" каталога с данными PostgreSQL дать полный доступ для этого самого юзера postgres, пронаследовав права всем "дочерним каталогам"
3) у каталога data\global проверить атрибут read-only - его быть не должно!
Эти три шага мне помогли.

Не админ а

Не админ а всего лишь юзер, потому прошу строго не относиться, но я не могу понять что не так. Посявятил целый божий день этому Постгре и хоть бы хны. Я так понимаю итнструкция устаревшая и теперь по другому ставится но принцип тот же. И так грабли те же самые: установил как надо, запускаю программу Holdem Manager которая работае в связке с базой - выругивается что не запущен сервер. Прошел через все шаги инициализации и создания юзера postgres с правами суперадмина - не помогает. В службах пытался запускать вручную - не запускается. из топика "Нюансы" удалось только добавить юзера для винды с назначением для него прав админа и все. пункт 2 реализовать не получилось така как в свойствах нет такой вкладки "безопасность" а пункт 3 упорно каким то образом восстанавливает атрибут "только для чтения" несмотря на неоднократные попытки. Пожалуйста помогите спасти комп от моей агрессии.

Создайте новую

Создайте новую тему в соответствующем форуме - там опишите все ваши шаги и тексты ошибок. К тому же там уже обсуждалась часть ваших проблем.

см. выше

Не делайте пользователя postgres админом!
Достаточно дать права чтения на postgresql.conf
(Прошу прощения, что не в форуме. Но до форума народ может не дойти, прочитав коменты).

Опции просмотра комментариев

Выберите предпочитаемый вами способ показа комментариев и нажмите "Сохранить настройки" для активации изменений.

Back to top

(С) Виктор Вислобоков, 2008-2010