PostgreSQL 10 startet nicht unter Ubuntu 18.04

2498
Jerry Ji

In meinem frischen Ubuntu 18.04 -

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

Installierte 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] 

Beides serviceund systemctlkehren sofort ohne Nachricht zurück, aber es wurde kein Postgres-Prozess gestartet.

$ sudo service postgresql restart $ sudo systemctl restart postgresql 

Ich bin komplett dunkel, da es weder conf noch log gibt -

$ 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 ../ 

Was ist da los? Jeder Zeiger wird sehr geschätzt.

Edit: Um das Ganze noch schlimmer zu machen, ist PostgreSQL 10 das einzige in Ubuntu 18.04 aufgeführte Paket. Es gibt keine offensichtliche Möglichkeit, eine ältere Version von PostgreSQL zu installieren

1
Haben Sie sich die Ausgabe von systemctl status postgresql angesehen? dsstorefile1 vor 6 Jahren 0
`$ sudo systemctl status postgresql ● postgresql.service - PostgreSQL RDBMS Geladen: geladen (/lib/systemd/system/postgresql.service; aktiviert; Herstellervorgabe: aktiviert) Aktiv: aktiv (beendet) seit So, 06. 06.08.06 06: 19:47 UTC; 2Std 13min vorher Prozess: 15349 ExecStart = / bin / true (Code = beendet, Status = 0 / ERFOLG) Haupt-PID: 15349 (Code = beendet, Status = 0 / ERFOLG) 06. Mai 06:19:47 myapp systemd [1] : PostgreSQL RDBMS wird gestartet ... 06. Mai 06:19:47 myapp systemd [1]: PostgreSQL RDBMS.` wurde gestartet Jerry Ji vor 6 Jahren 1
Wer / Warum hat diese Frage abgelehnt? Jerry Ji vor 6 Jahren 1

5 Antworten auf die Frage

3
Daniel Vérité

Aus dem Ergebnis haben apt list --installedSie keinen PostgreSQL 10-Server installiert.

Der Name des Pakets lautet genau postgresql-10: https://packages.ubuntu.com/bionic/database/postgresql-10 . Sie sollten dieses Paket installieren.

Das Fehlen von Fehlern systemctlund die Tatsache, dass ein postgresqlDienst existiert, ist verwirrend: Es postgresqlhandelt sich um einen "Umbrella" -Dienst, der jede installierte und konfigurierte Postgresql-Instanz startet. In Ihrem Fall haben Sie derzeit keine solche Instanz, aber das ist für den postgresqlDienst in Ordnung . Im Allgemeinen können mehrere verschiedene Versionen von PostgreSQL gleichzeitig (aus verschiedenen Paketen postgresql-<version>) und mehrere Instanzen derselben Version (aus demselben Paket) ausgeführt werden.

Ich würde vorschlagen, Ihre PostgreSQL - Instanzen mit zu überprüfen, pg_lsclustersstatt systemctl. Siehe auch pg_ctlcluster, um sie zu kontrollieren.

1
Mr.Robot

13.05.2014

HAFTUNGSAUSSCHLUSS: Dies gilt für Postgresql 10 und Ubuntu 18.04 und funktioniert möglicherweise nicht für andere Versionen. PS: Wenn Sie in letzter Zeit die Spracheinstellungen manipuliert haben, teilen Sie mir dies bitte mit, da möglicherweise ein Zusammenhang mit dem Postgres-Fehler besteht

Gestern hatte ich genau das gleiche Problem und niemand im ganzen Internet konnte mir helfen, also machte ich Schurken ... Und es hat funktioniert!

Wenn Sie über eine Datenbank mit Daten verfügen, an denen Sie interessiert sind, kann ich Ihnen dort nicht weiterhelfen. Sie müssen einen Weg finden, alle Ihre Daten zu sichern.

Nun zu den eigentlichen Schritten (genau das habe ich gemacht, die Schritte zwischen [ ]Ihnen können übersprungen werden ):

sudo apt entfernen --purge postgres *
[sudo apt entfernen --purge pg *]
sudo apt automatisch entfernen
sudo apt autoclean
sudo apt clean
[sudo find / -name "* postgres *" - Typ f -delete] -> dies kann alle löschen Backups

Stellen Sie jetzt sicher, dass Sie diese Zeile in /etc/apt/sources.list haben

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

Wenn Sie dies nicht tun, fügen Sie es einfach hinzu.

sudo apt Update
sudo apt Aktualisierung
sudo apt install -y postgresql-10 postgresql-contrib postgresql-client
[sudo apt install -y postgresql-server pgadmin3] -> dies kann für metasploit [sudo reboot] erforderlich sein

Jetzt müssen Sie überprüfen, ob die erforderlichen Verzeichnisse erstellt wurden:
/etc/postgresql/10/main-> Konfigurationsdateien
/usr/lib/postgresql/10/bin-> Skripts und ausführbare
/var/run/postgresqlDateien
/var/lib/postgresql/10/main-> temporäre Dateien -> Ordner

Wenn einer davon nicht existiert, kann ich Ihnen nicht helfen. Sie müssen auch sicherstellen, dass der Benutzer postgresvorhanden ist.

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

Gehen Sie jetzt zum Bearbeiten /etc/environmentund fügen Sie dies dem PFAD hinzu:/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_tmpR
sudo chtr 700 /var/run/postgresql/10-main.pg_stat_tmp -R


Erstellen /var/lib/postgresql/.bashrcund schreiben Sie dies

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 

Und dann:

sudo chown postgresql /var/lib/postgresql/.bashrc
sudo chgrp postgresql /var/lib/postgresql/.bashrc
sudo chmod 664 /var/lib/postgresql/.bashrc
[sudo reboot]


Und nun zum letzten Teil:


Sudo su su postgresql

So starten Sie postgresql:

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

Um es zu beenden:

töte $ (cat /var/run/postgresql/10-main.pid)

Grundkonfiguration (geben Sie den postgresqlInterpreter ein):

psql

\du+-> postgresql-Benutzer auflisten
\l-> postgresql-Datenbanken auflisten
createuserund dropuser-> selbsterklärend
createdbund dropdb-> selbsterklärend


EXTRA: METASPLOIT

Wenn jemand, der dies liest, Postgresql für Metasploit benötigt, können Sie diesem Link folgen (es ist für 16.04, funktioniert aber in 18.04), es gibt jedoch einen Fehler: Irgendwann müssen Sie Folgendes ausführen:
rvm --default use ruby-$@metasploit-framework gem pristine --all Statt der vorgeschlagenen:
rvm --default use ruby-$@metasploit-framework

Wenn Sie außerdem Probleme mit dem Ruby-Bundle-Installationsteil haben, kann dieser Befehl Ihr Leben retten:gem pristine --all

sudo apt entfernen --purge pg * Jerry Ji vor 6 Jahren 0
Hast Du es versucht? Mr.Robot vor 6 Jahren 0
Ja, und so fing ich Ihren Tippfehler auf. Vielen Dank für Ihre detaillierten Schritte. Ich wünschte, ich hätte genug Ruf, um Ihre Antwort abzustimmen Jerry Ji vor 6 Jahren 0
Zu Ihrer Information, um die Installation mit `psql` zu verifizieren:` sudo -u postgres psql postgres` Daniel vor 6 Jahren 0
0
user902416

Hatte das gleiche Problem hier. Alles was mit Postgres zu tun hatte (apt remove --purge) wurde entfernt, alle verbleibenden Verzeichnisse von Postgres 9 gelöscht und Postgres 10 erneut installiert. Dann erschienen die Konfigurationsdateien unter / etc / postgresql / und die Datenbank konnte gestartet werden. HTH.

0
Daniel

HAFTUNGSAUSSCHLUSS: Dies gilt für Postgresql 10 und Ubuntu 18.04 und funktioniert möglicherweise nicht für andere Versionen.

Befolgen Sie die Antwort, die von Mr Robotexcept erkannt wird:

  • Der Benutzer und die Gruppe sind postgresalso die Befehlechown -R postgres:postgres ...
  • Ich bin nicht sicher, was los ist, /lib/systemd/system/postgresql.serviceobwohl irgendwie /lib/systemd/system/postgresql@.serviceein PostgreSQL-Cluster verwaltet wird. Ich glaube, auf jeden Fall lief es bereits, als ich den Anweisungen folgte, und nach dem Neustart (was unnötig sein sollte) kam es wieder online, also denke ich, dass es funktioniert.
0
Patric Bechtel

Benutz einfach

service postgresql@10-main start 

und es funktioniert. Ich weiß nicht genau, warum dies nur in 18.04 geschieht (ich habe 17.10 verifiziert und dort nicht passiert), aber der "Regenschirm" scheint die installierten Instanzen nicht aufzählen zu können.

HTH,