web-dev-qa-db-ja.com

PostgreSQL 10がUbuntu 18.04で起動しない

私の新しい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]

servicesystemctlはどちらもメッセージなしですぐに戻りますが、postgresプロセスを開始しませんでした-

$ Sudo service postgresql restart
$ Sudo systemctl restart postgresql

Confもlogもないので、私は完全に暗いです。

$ 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をインストールする明確な「適切な」方法はありません。

6
Jerry Ji

apt list --installedの結果から、実際にはPostgreSQL 10サーバーがインストールされていません。

パッケージの名前は正確にpostgresql-10https://packages.ubuntu.com/bionic/database/postgresql-1 です。そのパッケージをインストールする必要があります。

systemctlにエラーがないこと、およびpostgresqlサービスが存在するという事実は混乱を招きます。これは、postgresqlが、インストールおよび設定されたすべてのpostgresqlインスタンスを起動する「傘」サービスであるためです。あなたの場合、現在そのようなインスタンスはありませんが、postgresqlサービスに関する限り問題ありません。最も一般的なケースでは、(異なるパッケージpostgresql-<version>から)同時に実行されているPostgreSQLの異なるバージョンがいくつかあり、同じバージョンの複数のインスタンスが(同じパッケージから)ある場合があります。

PostgreSQLインスタンスをsystemctlではなくpg_lsclustersで確認することをお勧めします。それらを制御するには、pg_ctlclusterも参照してください。

4
Daniel Vérité

使うだけ

service postgresql@10-main start

そしてそれは動作します。これが18.04でのみ発生する理由を正確に知りません(私は17.10を確認しましたが、そこでは発生しません)。しかし、「傘」はインストールされたインスタンスを列挙できないようです。

HTH、

4
Patric Bechtel

2018年5月13日

免責事項:これはpostgresql 10およびubuntu 18.04用で、または他のバージョンでは機能しない場合があります。 PS:postgresの失敗と関係がある可能性があるため、最近言語設定を改ざんしている場合は、教えてください

昨日、まったく同じ問題が発生し、インターネット全体の誰も助けてくれなかったので、私は悪党になりました...

何よりもまず、保持したいデータが含まれているデータベースがある場合、私はそのお手伝いはできません。すべてのデータをバックアップする方法を理解する必要があります。

次に、実際のステップ(これはまさに私がやったことです[ ]スキップしてもかまいません):

Sudo apt remove --purge postgres *
[Sudo apt remove --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/ubunt バイオニックメイン

そうでない場合は、追加してください...続けましょう:

Sudo apt update
sudo apt upgrade
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='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
else
    PS1='${debian_chroot:+($debian_chroot)}\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 reboot]


そして今、最後の部分について:

スードス
su postgres

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->自明


追加:METASPLOIT

これを読んでいる人がmetasploitにpostgresqlを必要とする場合、 このリンク(16.04の場合は18.04で正常に動作します) をたどることができますが、間違いがあります:ある時点で、これを実行する必要があります:
rvm --default use Ruby-${Ruby_VERSION}@metasploit-framework gem pristine --all提案された代わりに:
rvm --default use Ruby-${RUByVERSION}@metasploit-framework

さらに、Ruby bundle installの部分で問題が発生した場合、このコマンドはあなたの命を救う可能性があります:gem pristine --all

2
Mr.Robot

ここで同じ問題がありました。 postgres関連のすべてを削除し(apt remove --purge)、残りのすべてのディレクトリをpostgres 9から削除し、postgres 10を再インストールしました。次に、/ etc/postgresql /の下の構成ファイルが表示され、データベースを起動できます。 HTH。

1
user902416

免責事項:これはpostgresql 10およびubuntu 18.04用であり、他のバージョンでは機能しない場合があります。

認識しない限り、Mr Robotによって提供される answer に従います。

  • ユーザーとグループはpostgresなので、コマンドはchown -R postgres:postgres ...を使用する必要があります
  • どういうわけか/lib/systemd/system/postgresql.serviceがPostgreSQLクラスターを管理していますが、/lib/systemd/system/[email protected]がどうなっているのかわかりません。どちらの方法でも、指示に従った時点ですでに実行されていたと思います。また、再起動後(これは不要でしょうか?)、オンラインに戻ったので、動作すると思います。
1
Daniel

次に、必要なディレクトリが作成されたかどうかを確認する必要があります。..それらのいずれかが存在しない場合、私はお手伝いできません。

私は助けることができる。私の場合、多くの(主にシナプス)パージと再インストールが機能しなかったため、configディレクトリーは空のままでした。答えは、コマンドラインでパージと再インストールを行うことでした。

Sudo apt-get purge postgresql* && apt-get install postgresql postgresql-client

これにより、以下を含む多くのログメッセージがダンプされます。

...
Setting up postgresql-10 (10.8-0ubuntu0.18.04.1) ...
Error: The locale requested by the environment is invalid:
  LANG: en_GB.utf8
  ...
Error: could not create default cluster. Please create it manually with

     pg_createcluster 10 main --start

or a similar command (see 'man pg_createcluster').

つまり、私のロケール設定はデフォルトのインストールルーチンほど優先されなかったのではなく、ターミナルでパージとインストールを実行した場合にのみ、これが明らかになりました。

指定されたpg_createclusterコマンドを実行すると、設定ファイルが作成され、postgresユーザーとしてpsqlを使用してサーバーに接続できます。

0
robm

念のため... postgresqlの2つのインスタンスがインストールされたUbuntu 18.4(8.4および10)。と

service postgresql start

両方のインスタンスを開始できますが、メッセージは表示されないため、サービスを開始した後、実行する必要があります

ps -ef | grep postgres

両方が実行されていることを確認するには:

postgres 27019     1  0 15:46 ?        00:00:00 /usr/lib/postgresql/10/bin/postgres -D /var/lib/postgresql/10/main -c config_file=/etc/postgresql/10/main/postgresql.conf
postgres 27024 27019  0 15:46 ?        00:00:00 postgres: 10/main: checkpointer process   
postgres 27025 27019  0 15:46 ?        00:00:00 postgres: 10/main: writer process   
postgres 27026 27019  0 15:46 ?        00:00:00 postgres: 10/main: wal writer process   
postgres 27027 27019  0 15:46 ?        00:00:00 postgres: 10/main: autovacuum launcher process   
postgres 27028 27019  0 15:46 ?        00:00:00 postgres: 10/main: stats collector process   
postgres 27029 27019  0 15:46 ?        00:00:00 postgres: 10/main: bgworker: logical replication launcher   
postgres 27041     1 12 15:46 ?        00:00:00 /usr/lib/postgresql/8.4/bin/postgres -D /var/lib/postgresql/8.4/main -c config_file=/etc/postgresql/8.4/main/postgresql.conf
postgres 27046 27041  0 15:46 ?        00:00:00 postgres: writer process   
postgres 27047 27041  0 15:46 ?        00:00:00 postgres: wal writer process   
postgres 27048 27041  0 15:46 ?        00:00:00 postgres: autovacuum launcher process   
postgres 27049 27041  0 15:46 ?        00:00:00 postgres: stats collector process   

CentOSでは、インスタンスを読み込めないときにpgstartup.logログにエラーメッセージが記録されます(postgresインストールごとに1つのログファイルがあります)。 Ubuntuではこのようなものを見つけることができませんでした。何回か検索を行ったが成功しなかった後、何かを読んだところ、一般的なログイン/var/log/syslogログファイル、そしてそこに私が探していたものが見つかりました:

Oct 22 15:26:18 my-machine systemd[1]: Starting PostgreSQL Cluster 10-main...
Oct 22 15:26:19 my-machine postgresql@10-main[26620]: Use of uninitialized value $data_directory in concatenation (.) or string at /usr/share/Perl5/PgCommon.pm line 211.
Oct 22 15:26:19 my-machine postgresql@10-main[26620]: message repeated 2 times: [ Use of uninitialized value $data_directory in concatenation (.) or string at /usr/share/Perl5/PgCommon.pm line 211.]
Oct 22 15:26:19 my-machine postgresql@10-main[26620]: Error: Invalid data directory for cluster 10 main
Oct 22 15:26:19 my-machine systemd[1]: [email protected]: Can't open PID file /run/postgresql/10-main.pid (yet?) after start: No such file or directory
Oct 22 15:26:19 my-machine systemd[1]: [email protected]: Failed with result 'protocol'.
Oct 22 15:26:19 my-machine systemd[1]: Failed to start PostgreSQL Cluster 10-main.

注:私の場合、エラーメッセージは、postgresql.confファイルのさまざまなオプションを使用して作成したいくつかのテストが原因でした。

0
EAmez