PostgreSQL 10 не запускается под Ubuntu 18.04

2447
Jerry Ji

В моей свежей Ubuntu 18.04 -

$ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 18.04 LTS Release: 18.04 Codename: bionic 

Установил PostgreSQL 10 -

$ apt list --installed | grep -i postgres postgresql-client-10/bionic,now 10.3-1 amd64 [installed] postgresql-client-common/bionic,bionic,now 190 all [installed,automatic] postgresql-common/bionic,bionic,now 190 all [installed,automatic] postgresql-server-dev-10/bionic,now 10.3-1 amd64 [installed] postgresql-server-dev-all/bionic,bionic,now 190 all [installed] 

И то, serviceи другое systemctlсразу же, без сообщений, но не запускает процесс postgres -

$ sudo service postgresql restart $ sudo systemctl restart postgresql 

Я полностью в темноте, так как нет ни конфа, ни лога -

$ ll /etc/postgresql total 8 drwxr-xr-x 2 root root 4096 Feb 8 12:26 ./ drwxr-xr-x 95 root root 4096 May 6 04:11 ../  $ ll /var/log/postgresql/ total 8 drwxrwxr-t 2 root postgres 4096 Feb 8 12:26 ./ drwxrwxr-x 10 root syslog 4096 May 6 04:10 ../ 

То, что там происходит? Любой указатель будет высоко ценится.

Изменить: что еще хуже, PostgreSQL 10 является единственным перечисленным пакетом в Ubuntu 18.04, нет очевидного «подходящего» способа установки более старой версии PostgreSQL

1
Вы смотрели на вывод `systemctl status postgresql`? dsstorefile1 5 лет назад 0
`$ sudo systemctl status postgresql ● postgresql.service - СУБД PostgreSQL Загружен: загружен (/lib/systemd/system/postgresql.service; включен; предустановка поставщика: включен) Активен: активен (выход) с Sun 2018-05-06 06: 19:47 UTC; 2 ч. 13 мин. Назад Процесс: 15349 ExecStart = / bin / true (код = выход, статус = 0 / УСПЕХ) Основной PID: 15349 (код = выход, статус = 0 / УСПЕХ) май 06 06:19:47 myapp systemd [1] : Запуск СУБД PostgreSQL ... 6 мая 06:19:47 myapp systemd [1]: Запуск СУБД PostgreSQL. Jerry Ji 5 лет назад 1
Кто / почему отклонил этот вопрос? Jerry Ji 5 лет назад 1

5 ответов на вопрос

3
Daniel Vérité

В результате у apt list --installedвас не установлен сервер PostgreSQL 10.

Название пакета точно postgresql-10: https://packages.ubuntu.com/bionic/database/postgresql-10 . Вы должны установить этот пакет.

Отсутствие ошибки systemctlи тот факт, что postgresqlслужба существует, сбивают с толку: это потому, что postgresqlэто «зонтичная» служба, которая запускает каждый экземпляр postgresql, установленный и настроенный. В вашем случае у вас в настоящее время нет такого экземпляра, но это хорошо, если дело касается postgresqlсервиса. В наиболее общем случае у вас может быть несколько разных версий PostgreSQL, работающих одновременно (из разных пакетов postgresql-<version>), и несколько экземпляров одной и той же версии (из одного пакета).

Я бы посоветовал проверить ваши экземпляры PostgreSQL с помощью, pg_lsclustersа не systemctl. Смотрите также, pg_ctlclusterчтобы контролировать их.

1
Mr.Robot

05/13/2018

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Это для postgresql 10 и Ubuntu 18.04, и может работать или не работать для других версий. PS: Если вы в последнее время вмешивались в языковые настройки, пожалуйста, скажите мне, потому что может быть связь с ошибкой postgres

Вчера у меня возникла точно такая же проблема, и никто во всем Интернете не мог мне помочь, поэтому я стал мошенником ... И это сработало!

Прежде всего, если у вас есть какая-либо база данных с данными, которые вы хотите сохранить, я не могу вам помочь; вам нужно будет найти способ сделать резервную копию всех ваших данных.

Теперь перейдем к реальным шагам (это именно то, что я сделал, шаги между [ ]вами могут пропустить ):

sudo apt удалить --purge postgres *
[sudo apt удалить --purge pg *]
sudo apt autoremove
sudo apt autoclean
sudo apt clean
[sudo find / -name "* postgres *" -type f -delete] -> это может удалить любой резервное копирование

Теперь убедитесь, что у вас есть эта строка в /etc/apt/sources.list

deb http://cz.archive.ubuntu.com/ubuntu bionic main

Если нет, просто добавьте его ... Давайте продолжим:

обновление
sudo apt обновление
sudo apt sudo apt install -y postgresql-10 postgresql-contrib postgresql-client
[sudo apt install -y postgresql-server pgadmin3] -> это может понадобиться для metasploit
[sudo reboot]

Теперь вы должны проверить, были ли созданы необходимые каталоги:
/etc/postgresql/10/main-> файлы конфигурации
/usr/lib/postgresql/10/bin-> скрипты и исполняемые файлы
/var/run/postgresql-> временные файлы
/var/lib/postgresql/10/main-> папки

Если что-то из этого не существует, я не могу вам помочь. Вы также должны убедиться, что пользователь postgresсуществует. Давайте продолжим:

sudo chown root / usr / lib / postgresql -R
sudo chgrp root / usr / lib / postgresql -R
sudo chmod 755 / usr / lib / postgresql -R

Теперь перейдите к редактированию /etc/environmentи добавьте это в PATH:/usr/lib/postgresql/10/bin

sudo chown postgres / etc / postgresql -R
sudo chgrp postgres / etc / postgresql -R
sudo chmod 700 / etc / postgresql -R

sudo echo ""> /etc/postgresql/10/main/postgresql.log
sudo chown postgresql /etc/postgresql/10/main/postgresql.log
sudo chgrp postgresql /etc/postgresql/10/main/postgresql.log
sudo chmod 700 /etc/postgresql/10/main/postgresql.log

sudo mkdir /var/run/postgresql/10-main.pg_stat_tmp
sudo chown postgres /var/run/postgresql/10-main.pg_stat_tmp -R
sudo chgrp postgres /var/run/postgresql/10-main.pg_stat_tmp -R
sudo chmod 700 /var/run/postgresql/10-main.pg_stat_tmp -R


Создай /var/lib/postgresql/.bashrcи запиши это

shopt -s histappend HISTSIZE=1000 HISTFILESIZE=2000 shopt -s checkwinsize case "$TERM" in xterm-color|*-256color) color_prompt=yes;; esac force_color_prompt=yes if [ -n "$force_color_prompt" ]; then if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then color_prompt=yes else color_prompt= fi fi  if [ "$color_prompt" = yes ]; then PS1='$\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ ' else PS1='$\u@\h:\w\$ ' fi unset color_prompt force_color_prompt if [ -x /usr/bin/dircolors ]; then test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)" alias ls='ls --color=auto' alias grep='grep --color=auto' alias fgrep='fgrep --color=auto' alias egrep='egrep --color=auto' fi alias ll='ls -alF' alias la='ls -A' alias l='ls -CF' if ! shopt -oq posix; then if [ -f /usr/share/bash-completion/bash_completion ]; then . /usr/share/bash-completion/bash_completion elif [ -f /etc/bash_completion ]; then . /etc/bash_completion fi fi source /etc/environment 

А потом:

sudo chown postgresql /var/lib/postgresql/.bashrc
sudo chgrp postgresql /var/lib/postgresql/.bashrc
sudo chmod 664 /var/lib/postgresql/.bashrc
[перезагрузка sudo]


А теперь финальная часть:

sudo su
su postgresql

Для запуска postgresql:

pg_ctl start -D / etc / postgresql / 10 / main -l /etc/postgresql/10/main/postgresql.log

Чтобы закончить это:

kill $ (cat /var/run/postgresql/10-main.pid)

Базовая конфигурация (введите postgresqlпереводчик):

PSQL

\du+-> список пользователей postgresql
\l-> список баз данных postgresql
createuserи dropuser-> самоочевидность
createdbи dropdb-> самоочевидность


ЭКСТРА: МЕТАСПЛОЙТ

Если кому-то, читающему это, нужен postgresql для metasploit, вы можете перейти по этой ссылке (она для 16.04, но отлично работает в 18.04), однако есть ошибка: в какой-то момент вам нужно будет выполнить это:
rvm --default use ruby-$@metasploit-framework gem pristine --all Вместо предложенного:
rvm --default use ruby-$@metasploit-framework

Кроме того, если у вас возникнут проблемы с установочной частью пакета ruby, эта команда может спасти вам жизнь:gem pristine --all

sudo apt удалить --purge pg * Jerry Ji 5 лет назад 0
ты пробовал это? Mr.Robot 5 лет назад 0
Да, и вот как я поймал вашу опечатку. Кстати, спасибо за ваши подробные шаги, я хотел бы иметь достаточно репутации, чтобы проголосовать за ваш ответ Jerry Ji 5 лет назад 0
К вашему сведению, чтобы проверить установку, используя `psql`:` sudo -u postgres psql postgres` Daniel 5 лет назад 0
0
user902416

Была такая же проблема здесь. Удалил все, что касается postgres (apt remove --purge), удалил все оставшиеся каталоги из postgres 9 и снова переустановил postgres 10. Затем появились файлы конфигурации в / etc / postgresql / и база данных могла быть запущена. НТН.

0
Daniel

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Это для postgresql 10 и Ubuntu 18.04, и может работать или не работать для других версий.

Следуйте ответу, предоставленному, Mr Robotкроме как признать:

  • Пользователь и группа есть postgres, поэтому команды должны использоватьchown -R postgres:postgres ...
  • Я не уверен, что случилось, /lib/systemd/system/postgresql.serviceхотя каким-то образом /lib/systemd/system/postgresql@.serviceуправляет кластером PostgreSQL? В любом случае, я думаю, что он уже работал к тому времени, когда я следовал инструкциям, и после перезагрузки (что должно быть ненужным?) Он вернулся в режим онлайн, так что я думаю, что это работает.
0
Patric Bechtel

Просто используйте

service postgresql@10-main start 

и это работает. Не знаю точно, почему это происходит только в 18.04 (я проверил 17.10, и этого не происходит), но «зонтик», похоже, не может перечислить установленные экземпляры.

НТН,

Похожие вопросы