私の新しい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
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をインストールする明確な「適切な」方法はありません。
apt list --installed
の結果から、実際にはPostgreSQL 10サーバーがインストールされていません。
パッケージの名前は正確にpostgresql-10
: https://packages.ubuntu.com/bionic/database/postgresql-1 です。そのパッケージをインストールする必要があります。
systemctl
にエラーがないこと、およびpostgresql
サービスが存在するという事実は混乱を招きます。これは、postgresql
が、インストールおよび設定されたすべてのpostgresqlインスタンスを起動する「傘」サービスであるためです。あなたの場合、現在そのようなインスタンスはありませんが、postgresql
サービスに関する限り問題ありません。最も一般的なケースでは、(異なるパッケージpostgresql-<version>
から)同時に実行されているPostgreSQLの異なるバージョンがいくつかあり、同じバージョンの複数のインスタンスが(同じパッケージから)ある場合があります。
PostgreSQLインスタンスをsystemctl
ではなくpg_lsclusters
で確認することをお勧めします。それらを制御するには、pg_ctlcluster
も参照してください。
使うだけ
service postgresql@10-main start
そしてそれは動作します。これが18.04でのみ発生する理由を正確に知りません(私は17.10を確認しましたが、そこでは発生しません)。しかし、「傘」はインストールされたインスタンスを列挙できないようです。
HTH、
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 -RSudo 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.logSudo 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に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
ここで同じ問題がありました。 postgres関連のすべてを削除し(apt remove --purge)、残りのすべてのディレクトリをpostgres 9から削除し、postgres 10を再インストールしました。次に、/ etc/postgresql /の下の構成ファイルが表示され、データベースを起動できます。 HTH。
免責事項:これはpostgresql 10およびubuntu 18.04用であり、他のバージョンでは機能しない場合があります。
認識しない限り、Mr Robot
によって提供される answer に従います。
postgres
なので、コマンドはchown -R postgres:postgres ...
を使用する必要があります/lib/systemd/system/postgresql.service
がPostgreSQLクラスターを管理していますが、/lib/systemd/system/[email protected]
がどうなっているのかわかりません。どちらの方法でも、指示に従った時点ですでに実行されていたと思います。また、再起動後(これは不要でしょうか?)、オンラインに戻ったので、動作すると思います。次に、必要なディレクトリが作成されたかどうかを確認する必要があります。..それらのいずれかが存在しない場合、私はお手伝いできません。
私は助けることができる。私の場合、多くの(主にシナプス)パージと再インストールが機能しなかったため、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を使用してサーバーに接続できます。
念のため... 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ファイルのさまざまなオプションを使用して作成したいくつかのテストが原因でした。