Не удалось запустить файл initdb

Обновлено: 06.07.2024

initdb [ параметр . ] [ --pgdata | -D ] каталог

Описание

Команда initdb создаёт новый кластер баз данных PostgreSQL . Кластер — это коллекция баз данных под управлением единого экземпляра сервера.

Инициализация кластера базы данных заключается в создании каталогов для хранения данных, формировании общих системных таблиц (относящихся ко всему кластеру, а не к какой-либо базе) и создании баз данных template1 и postgres . Впоследствии все новые базы создаются на основе шаблона template1 (все дополнения, установленные в template1 автоматически копируются в каждую новую базу данных). База postgres используется пользователями, утилитами и сторонними приложениями по умолчанию.

При попытке создать каталог для хранения данных initdb может столкнуться с нехваткой прав доступа, если этот каталог принадлежит суперпользователю root. В таком случае необходимо назначить пользователя базы данных владельцем этого каталога при помощи chown . Затем выполнить su для смены пользователя и дальнейшего выполнения initdb .

Команда initdb должна выполняться от имени пользователя, под которым будет запускаться сервер, так как ему необходим полный доступ к файлам и каталогам, создаваемым initdb . Сервер не может запускаться от имени суперпользователя, поэтому выполнение команды initdb от его лица будет отклонено.

Из соображений безопасности новый кластер, созданный программой initdb , будет доступен только для владельца кластера. Ключ --allow-group-access позволяет разрешить чтение файлов в кластере всем пользователям, входящим в группу владельца кластера. Это полезно для выполнения резервного копирования от имени непривилегированного пользователя.

initdb инициализирует локали и кодировки баз данных кластера, которые будут использоваться по умолчанию. Кодировка, порядок сортировки ( LC_COLLATE ), классы наборов символов ( LC_CTYPE , например, заглавные, строчные буквы, цифры) могут устанавливаться раздельно при создании новой базы данных. initdb определяет параметры локали для шаблона template1 , которые будут применяться по умолчанию для новых баз.

Чтобы изменить порядок сортировки по умолчанию или классы наборов символов, используются параметры --lc-collate и --lc-ctype . Порядок сортировки, отличающийся от C или POSIX , оказывает влияние на производительность. Поэтому необходимо тщательно выбирать необходимую и достаточную локаль при выполнении initdb .

Другие категории локали можно изменить и после старта сервера. Также можно использовать параметр --locale , чтобы задать локаль для всех категорий одновременно, включая порядок сортировки и классы наборов символов. Значения локалей сервера ( lc_* ) можно вывести командой SHOW ALL . Узнать об этом больше можно в Разделе 23.1.

Для изменения кодировки по умолчанию используется параметр --encoding . Узнать об этом больше можно в Разделе 23.3.

Параметры

Параметр определяет метод аутентификации по умолчанию для локальных пользователей, используемый в файле pg_hba.conf (строки host и local ). Программа initdb предварительно внесёт указанный метод аутентификации в pg_hba.conf в записи как обычных соединений, так и соединений репликации.

Не используйте trust , если не можете доверять всем локальным пользователям в вашей системе. Режим trust используется по умолчанию для облегчения процесса установки. --auth-host= authmethod

Параметр указывает метод аутентификации для локальных пользователей, подключающихся по TCP/IP, используемый в pg_hba.conf (строки host ). --auth-local= authmethod

Параметр выбирает метод аутентификации локальных пользователей, подключающихся через Unix-сокет, используемый в pg_hba.conf (строки local ). -D каталог
--pgdata= каталог

Параметр указывает каталог хранения данных кластера. Это единственный обязательный параметр для команды initdb . При этом его можно указать в переменной окружения PGDATA , что будет удобным при дальнейшем использовании ( postgres обращается к этой же переменной). -E кодировка
--encoding= кодировка

Устанавливает кодировку шаблона и новых баз данных по умолчанию, если не указать иное при их создании. По умолчанию устанавливается исходя из указанной локали, и далее, если не удалось определить, выбирается SQL_ASCII . Кодировки, поддерживаемые сервером PostgreSQL , описаны в Подразделе 23.3.1. -g
--allow-group-access

Позволяет пользователям, входящим в группу владельца кластера, читать все файлы кластера, создаваемые программой initdb . В Windows этот ключ не работает, так как там не поддерживаются разрешения для группы в стиле POSIX . -k
--data-checksums

Применять контрольные суммы на страницах данных для выявления сбоев при вводе/выводе, которые иначе останутся незамеченными. Расчёт контрольных сумм может повлечь заметное снижение производительности. Когда контрольные суммы включены, они рассчитываются для всех объектов и во всех базах данных. Все ошибки контрольных сумм будут видны в представлении pg_stat_database. --locale= локаль

Устанавливает локаль кластера по умолчанию. Если флаг не указан, локаль устанавливается согласно окружению, в котором исполняется команда initdb . Поддерживаемые локали описаны в Разделе 23.1. --lc-collate= локаль
--lc-ctype= локаль
--lc-messages= локаль
--lc-monetary= локаль
--lc-numeric= локаль
--lc-time= локаль

Аналогично --locale устанавливает необходимую локаль, но в заданной категории. --no-locale

Аналогично флагу --locale=C . -N
--no-sync

По умолчанию initdb ждёт, пока все файлы не будут надёжно записаны на диск. С данным параметром initdb завершается быстрее, без ожидания, но в случае неожиданного сбоя операционной системы каталог данных может оказаться испорченным. Этот параметр может быть полезен при тестировании; в производственной среде применять его не следует. --pwfile= имя_файла

Принуждает initdb читать пароль суперпользователя базы данных из файла, первая строка которого используется в качестве пароля. -S
--sync-only

Безопасно записывает все файлы базы на диск и останавливается. Другие операции initdb при этом не выполняются. -T конфигурация
--text-search-config= конфигурация

Устанавливает конфигурацию текстового поиска по умолчанию. За дополнительными сведениями обратитесь к default_text_search_config. -U имя_пользователя
--username= имя_пользователя

Устанавливает имя суперпользователя базы данных. По умолчанию используется имя пользователя ОС, запустившего initdb . По факту, само по себе имя суперпользователя базы данных не важно, но этот параметр позволяет оставить привычное postgres , если имя пользователя ОС другое. -W
--pwprompt

Указывает initdb запросить пароль, который будет назначен суперпользователю базы данных. Это не важно, если не планируется использовать аутентификацию по паролю. В ином случае этот режим аутентификации оказывается неприменимым, пока пароль не задан. -X каталог
--waldir= каталог

Этот параметр указывает каталог для хранения журнала предзаписи. --wal-segsize= размер

Задаёт размер сегмента WAL, в мегабайтах. Такой размер будет иметь каждый отдельный файл в журнале WAL. По умолчанию размер равен 16 мегабайтам. Значение должно задаваться степенью 2 от 1 до 1024 (в мегабайтах). Этот параметр можно установить только во время инициализации и нельзя изменить позже.

Этот размер бывает полезно поменять при тонкой настройке трансляции или архивации WAL. Кроме того, в базах данных с WAL большого объёма огромное количество файлов WAL в каталоге может стать проблемой с точки зрения производительности и администрирования. Увеличение размера файлов WAL приводит к уменьшению числа этих файлов.

Другие реже используемые параметры описаны здесь:

Указывает initdb , где необходимо искать входные файлы для развёртывания кластера. Обычно это не требуется. Приложение само запросит эти данные, если будет необходимо. -n
--no-clean

По умолчанию, при выявлении ошибки на этапе развёртывания кластера, initdb удаляет все файлы, которые к тому моменту были созданы. Параметр предотвращает очистку файлов для целей отладки.

Выводит версию initdb и останавливается. -?
--help

Показывает помощь по аргументам команды initdb и останавливается.

Переменные окружения

Указывает каталог хранения данных кластера, можно изменить параметром -D . PG_COLOR

Указывает часовой пояс кластера по умолчанию. Значение — это полное имя часового пояса (см. Подраздел 8.5.3).

Эта утилита, как и большинство других утилит PostgreSQL , также использует переменные среды, поддерживаемые libpq (см. Раздел 33.14).

Здравствуйте, при установке PostgreSQL (любой версии 9.6, 10.5, 11.5) вылетает ошибка "Failed to run initdb: 1! Please see the logfile in C:\. \tmp\initdb.log."
Пути установки оставлял стандартные и ставил на другой диск, итог всегда один.
ОС: Windows Server 2008 R2 64bit.
Прикрепил лог установки.

running bootstrap script . initdb: could not execute command ""C:/Program Files/PostgreSQL/9.6.7-1.1C/bin/postgres.exe" --boot -x1 -F ": No error
initdb: removing contents of data directory "G:/PostgreSQL/data"

Отсюда видно "initdb: could not execute command", не может выполнить команду.

Подскажите, в какую сторону копать, в чем может быть проблема?

__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь

Ошибка "could not access file "$libdir/fasttrun" при создании БД
Добрый день! Простите, возможно обращаюсь не в тот раздел, но у меня появилась следующая проблема.


При загрузке дампа ошибка : role "serge" does not exist
Привет, что-то сбилось в настройках моего PostgreSQL что при загрузке дампа получаю.

Postgres Enterprise Manager - ошибка синтаксиса "%22" при создании таблицы
Поставил 11 версию, пытаюсь создать тестовую табличку-наследника и вот наступил на грабли дурацкие.

При установке Openbravo ERP выдаёт "no initdb program for version 8.4"
здравствуйте столкнулся с такой проблемой при установке openbravo ERP Настраивается пакет.

Тема закрыта, разобрался сам, всем спасибо =)))
Кто столкнется с такой проблемой
initdb: could not execute command ""C:/Program Files/PostgreSQL/9.6.7-1.1C/bin/postgres.exe" --boot -x1 -F "

Проверяйте переменный среды.
Запускаем "echo %COMSPEC%", если по пути, который выдаст данная команда не будет cmd.exe, в этом и проблема заключалась у меня.

ошибка "Anaconda failed to create Menus" при установке Анаконды
Не могу решить проблему с ошибкой "Anaconda failed to create Menus" при установки Анаконды.

Ошибка при установке "Windows failed to load because a required file is missing, or corrupt"
Собственно, при переустановке windows 7, после выбора 32/64 бит, начинается загрузка и вылезает эта.

Ошибка при установке Windows: "Default Boot Device Missing or Boot Failed"
В общем решил переустановить виндовс. Сначала были проблемы с GPT и EFI. Сделал все как написано.


Ошибка при установке Windows на ноутбук HP Pavilion Sleekbook 15: "Windows failed to start"
При установки WIN-10 с USB-флеш загрузчик потребовал отформатировать диск, а после этого сообщил.

Другой способ решить эту проблему - изменить регион (язык) вашей операционной системы (Машины). Если вы выбираете, например, французский, возьмите французский из Франции, а не местный французский. То же самое для английского, а не местного английского. Некоторые символы не работают с местным языком. Думаю, это решит вашу проблему.

Для меня это терпело неудачу каждый раз и для каждого решения, упомянутого здесь. Затем, после небольших собственных исследований и разработок, я смог успешно использовать postgresql. Ниже приведены шаги, которые необходимо выполнить при обнаружении этой ошибки «сбой при инициализации кластера базы данных».

Вы должны вручную запустить initdb, который присутствует: "C: \ Software \ PostgreSql \ 12 \ bin"

Теперь убедитесь, что вы связали "postgres" как пользователя с командой initdb, поскольку "postgres" - это суперпользователь, созданный во время установки.

initdb -D "D: \ PostgreSql \ 12 \ data" -U postgres

Теперь, когда кластер базы данных инициализирован, вы можете запустить сервер с помощью утилиты pg_ctl, находящейся в папке bin PostgreSql \ 12.

pg_ctl start -D "D: \ PostgreSql \ 12 \ data"

Или вы также можете зарегистрировать его как службу Windows, и вы можете установить его на автоматический

pg_ctl register -N PostgreSql-12.3.1 -D "D: \ PostgreSql \ 12 \ data"

Теперь вы готовы к использованию базы данных postgresql. Либо используйте его через строку cmd (psql), либо pgAdmin4

У меня была такая же ошибка, но с другой основной проблемой (не с разрешениями пользователя, а с проблемой локали). Решение для этого описано здесь: Инициализация кластера базы данных Win 10 Postgresql 11 не удалась

Я пытался и терпел неудачу несколько раз, думая, что это как-то связано с правами и пользователем, которые использовались во время установки. Но благодаря совету ThangLeQuoc по проверке журнала установки я нашел причину:

initdb: недопустимое имя локали "NorwegianBokm † l, Norway"

Вызывается Die (не удалось инициализировать кластер базы данных с помощью initdb) .

Не удалось инициализировать кластер базы данных с помощью initdb

Итак, после выбора «локали по умолчанию» в процессе установки все прошло нормально. Это было в версии 11.6 OS Postgres.

Я выполнил шаги, предложенные @IsoNecroMad, и это сработало

1) Прежде всего, запустите настройку от имени администратора.

2) Выберите папку для установки внутри программных файлов (по умолчанию)

3) Но выберите расположение данных вне указанной выше папки в другое место (c: \ postgres data или что-то в этом роде.)

Возможное решение для 10.3. версия:

Переместите загруженный файл на диск C: \.
Пример: C:\postgresql-10.3-2-windows-x64.exe

Создайте каталог с именем PostgreSQL на диске C: \

Создайте каталог с именем 10 в ранее созданном каталоге PostgreSQL.
Итак, вам нужно иметь C: \ PostgreSQL \ 10 .

Запустите C: \ postgresql-10.3-2-windows-x64.exe (НЕ НАЖИМАЙТЕ «ЗАПУСТИТЬ ОТ АДМИНИСТРАТОРА», просто дважды щелкните)

Измените путь к каталогу установки на C:\PostgreSQL

Измените путь к каталогу данных на C:\PostgreSQL\data

Надеюсь, установка пройдет успешно.

Запустите установку от имени администратора и используйте режим Windows 7

Я столкнулся с той же проблемой при попытке установить postgres 10.3. Запуск от имени администратора мне не помог. Но он был установлен правильно, когда я изменил каталог установки с каталога по умолчанию, который находится внутри Program Files. Вместо этого я создал новую папку на диске C и сделал ее каталогом установки.

Я устанавливал Postgres версии 9.5 (в Windows 7 и с помощью установщика DBEnterprise) . для меня проблема, похоже, в том, что я выбирал "POSIX" в качестве региональной конфигурации . Но я пробовал с региональной конфигурацией "C" Настройка и установка завершились без проблем .

Также я запускаю установщик от имени администратора!

Только не используйте установщик EDB. Сейчас есть альтернатива BigSQL.

Сейчас 2019 , и у меня все еще та же проблема с Postgres 11 . Перед этим я удаляю текущий Postgres 9.6 (если я правильно помню версию) и пытаюсь установить новый Postgres 11, и возникает проблема. Я пробовал следующие подходы, но ни один из них не работает:

  • Запускать установку от имени администратора при каждом запуске -> сбой
  • Выберите папку для установки по умолчанию, предложенную при установке (C: / Program Files / PostgresSQL / 11), и папку данных, расположенную в другом место -> не удалось
  • Установить его за пределами C: / -> все равно не удалось

Шаг 2: Я пытался запустить postgres . Это не найдено. По какой-то причине установка не добавляет его в путь? Поэтому мне пришлось вручную добавить строку export PATH=$PATH:/usr/lib/postgresql/9.1/bin в конец моего

/.profile . (Sidenote: Кто-нибудь знает, почему это необходимо? Я делаю что-то не так с установкой? Все остальное, что я установил в Ubuntu, "просто работает" без изменения $PATH . )

Шаг 3: Я пытаюсь запустить initdb /usr/local/var/postgres . Доступ запрещен. Я пытаюсь запустить sudo initdb /usr/local/var/postgres . Результат sudo: initdb: command not found . Как эта команда не найдена? Я просто проклял эту чертову штуку! echo sudo $PATH показывает каталог PostgreSQL в пути . что мне не хватает?

Я немного новичок в Linux, но я сталкиваюсь с супер раздражающими проблемами!

ОБНОВЛЕНИЕ: я полагаю, что это связано с этим вопросом. Однако, выполнив команду с sudo -i не решает проблему. Я просто получаю: -bash: initdb: command not found . Отлично.

ОБНОВЛЕНИЕ: Это кажется еще ближе. Поэтому я добавил alias sudo='sudo env PATH=$PATH' в мой .bashrc в соответствии с инструкциями. Все еще не работает! Похоже, псевдоним не работает. Когда я запускаю alias , я показываю только один. И все же мой .bashrc полон их . так что что-то не так с теми, кто настраивается.

ОБНОВЛЕНИЕ: Поскольку я использую Ubuntu и RVM, RVM рекомендовал настроить терминал на "Запускать команду в качестве оболочки входа в систему". Судя по чтению, которое я сделал здесь, кажется, что файл .bashrc не читается в оболочке входа, только профиль. Поэтому я переместил строку alias из .bashrc в .profile , так что .profile теперь имеет в конце:

. и это все еще не работает. Запуск alias показывает только псевдоним RVM, но не псевдоним sudo который я пытался настроить.

ОБНОВЛЕНИЕ С этого сайта я прочитал о приоритете дотфайлов. Похоже, что .bash_profile предшествует .profile . При этом, мои добавления PATH были сделаны в .profile и, похоже, были загружены просто отлично, так почему же alias также не работает? Однако перемещение alias в .bash_profile из .profile сработало. Тайна. Итак, команда alias показывает мой новый псевдоним. Наконец, я sudo initdb /usr/local/var/postgres , чтобы встретиться с: initdb: cannot be run as root . Да неужели? Тогда почему вы даете мне ошибки разрешения?! Итак, теперь я думаю, что проблема в том, что мне просто нужно chown папку, но при этом запустить initdb как мой пользователь, а не как root .

ОБНОВЛЕНИЕ Выполнение команды sudo chown myuser /usr/local/var/postgres/ , а затем запуск initdb впоследствии позволили инициализировать базу данных. Рад, что было так очевидно, что права доступа к каталогу нужно было установить как myuser, а не как root. Невероятный. Успешная инициализация базы данных через 4 часа.

Оба C:\PostgreSQL и C:\PostgreSQL\data есть postgres пользователь с полным доступом и правами администратора.

Я запустил postgresql-9.1.2-1-windows.exe от пользователя postgres от имени администратора. цель C:\PostgreSQL

Каждый раз, когда я пытаюсь, я получаю «Сбой инициализации кластера базы данных».

  • Можно ли запускать все без службы Windows?
  • Есть ли обходной путь для установки в качестве службы Windows?

Я пытаюсь настроить PostGIS для работы с GeoDjango.

Мне удалось вручную установить PostGIS. Новичок в PostgreSQL, и у меня кризис доверия по поводу всего этого. Переход с MySQL на PostgreSQL в первый раз.

Соответствующий вывод журнала из C: \ Users \ Larry \ AppData \ Local \ Temp \ install-postgresql.log:

смотрите журнал установки (он должен быть где-то на диске, вероятно, в% TEMP%) Есть ли в Postgres для Windows пользователей имеют полные права на чтение и запись на C: \ PostgreSQL \ Data? Да, и в соответствии с предложением в другом месте я дал пользователям право изменять этот каталог.

У меня была такая же проблема при установке 9.1.4 на Windows 7. Мне удалось найти решение онлайн, которое работало .

Шаги, которые я выполнил:

Удалите пользователя postgres, если он все еще существует.

Создайте пользователя postgres с паролем, который вы можете запомнить

Добавьте пользователя postgres в группу администраторов

Добавьте пользователя postgres в группу «Опытные пользователи»

Запустите командное окно от имени пользователя postgres

Запустите файл установки из командной строки.

Это должно запустить установку успешно.

Удалите пользователя postgres из группы администраторов.

Спасибо за ваш отзыв! К сожалению, с тех пор я перенес этот проект в Mongodb. В данный момент я не могу подтвердить ваше предложение. Я хочу подтвердить, что решение сработало для меня. Установка: Postgres 9.1 64-битная и PostGIS 2.0.1 x64 Это хорошо известная проблема с переустановкой PostgreSQL, который работает как служба, и я лично столкнулся с ситуацией, в которой рассматривается этот ответ. Установщик оставляет учетную запись после удаления или обновления, но вторая установка не учитывает это; результирующее несоответствие между учетными данными создает хаос. Самый распространенный ответ - тот, который дает Имраан; удалите, удалите оскорбительную учетную запись, затем переустановите. @AveryPayne: альтернативно: запомните правильный пароль для учетной записи службы postgres. Я много устанавливал Postgres в системах, где он уже был установлен, и у меня никогда не было проблем с существующей служебной учетной записью. Хотя формулировка в установщике могла бы быть улучшена (с 9.2 Postgres больше не использует явную учетную запись) Имейте в виду, что на шаге 4 administrators это зависит от локали. Например, в PT-BR это так administradores . И на шаге 5 "power users" есть "usuários avançados" .

В моем случае (как я видел из файла postgresql.log в папке% temp% в Windows) это происходило из-за того, что установщику не удалось найти doskey.exe, хотя путь к папке c: \ windows \ system32 был указан в переменная окружения путь окон.
Поэтому я открыл командную строку, набрал set PATH=%PATH%;c:\windows\system32 и запустил установщик из самой командной строки. Это сработало! :)

Ничто из вышеперечисленного не помогло мне. Я не использовал postgres.

Поэтому я удалил / удалил все. Запустил cmd как администратор.

Затем запустил установщик из командной строки (от имени администратора) и выбрал совершенно новое место для каталога данных.

Я теперь успешно переустанавливал postgres, после полдня поиграть в покер.

Как только я явно добавил C: \ Windows \ system32 в переменную среды SYSTEM Path и снова запустил установщик с правами администратора, все работало нормально.

Эта проблема связана с разрешением на запись в папку. Например, создайте папку / data в PostgreSQL \ 9.2 и дайте полное разрешение пользователю. Попробуйте переустановить снова.

Читайте также: