Ubuntu 16を実行しています。Postgresqlをインストールしました。以前はPostgresqlが機能していましたが、その後再起動しました。
nmapコマンドは、ポート5432が開いていることを示します。 Postgresは正しく動作しているようです:
service postgresql status
postgresql.service-PostgreSQL RDBMSロード済み:ロード済み(/lib/systemd/system/postgresql.service;有効化;ベンダープリセット:有効化)アクティブ:2017年7月29日18:42:59 EDT以降アクティブ(終了) 1分4秒前プロセス:201 ExecStart =/bin/true(code = exited、status = 0/SUCCESS)メインPID:201(code = exited、status = 0/SUCCESS)
メモリ:0B CGroup:/system.slice/postgresql.service
私はこれを実行しました:psql
しかし、私はこれを得ました:
psql:サーバーに接続できませんでした:そのようなファイルまたはディレクトリはありませんサーバーはローカルで実行され、Unixドメインソケット "/var/run/postgresql/.s.PGSQL.5432"で接続を受け入れていますか?
上記のファイルは存在しないようです。
どのようにしてPostgresqlに入りますか?通常、psql
またはSudo -i -u postgres
を実行してからpsql
を実行します。しかし、これらのコマンドは機能していません。 「サーバーに接続できませんでした」というエラーが表示され続けます。いくつかの再起動は助けにはなりませんでした。
更新:
次のコマンドを実行しました:dpkg -l | grep postgres
rc postgresql-9.5 9.5.6-0ubuntu0.16.04 AMD64オブジェクトリレーショナルSQLデータベース、バージョン9.5サーバー ii postgresql-client 9.5 + 173 PostgreSQLのすべてのフロントエンドプログラム(サポートされているバージョン) ii postgresql-client-9.5 9.5.7-0ubuntu0.16.04 PostgreSQL 9.5用のAMD64フロントエンドプログラム ii postgresql-client-common 173複数のPostgreSQLクライアントバージョン用のすべてのマネージャー ii postgresql-common 173すべてのPostgreSQLデータベースクラスターマネージャー
psql:サーバーに接続できませんでした:そのようなファイルまたはディレクトリはありませんサーバーはローカルで実行され、Unixドメインソケット "/var/run/postgresql/.s.PGSQL.5432"で接続を受け入れていますか?
このエラーは通常、サーバーが実行されていないことを意味します。 dpkg -l
出力とコメントのスレッドに基づくと、これはpostgresql-9.5
メインパッケージが何らかの理由でアンインストールされたことが原因でした。 dpkg
の--purge
オプションを指定してアンインストールが呼び出されていないため、データファイルと構成ファイルがまだ残っているため、apt-get install postgresql-9.5
で問題を解決できます。
おそらく複数のPostgreSQLバージョンがインストールされています。その場合、他のバージョンはおそらくデフォルトでunix_socket_directories = '/tmp/'
になりますが、libpq
your psql
はおそらくデフォルトで/var/run/postgresql/
にリンクされます。
やってみる
psql -h /tmp
それが機能する場合、上記が問題です。 export PGHOST=/tmp
を.bashrc
に追加して、ユーザーのデフォルトをローカルで変更できます。
しないが機能する場合は、PostgreSQLが実際に実行されていることを確認してください
ps aux |grep postgres
そうでない場合は、それを開始します。インストール方法によって異なりますが、パッケージを使用してインストールした場合は、service
またはsystemctl
コマンドを使用します。
Postgresサービスがエラーなしで稼働している場合、またはPostgresサービスの開始にエラーがないにもかかわらず、前述のエラーが発生する場合は、次の手順に従ってください。
pg_lsclusters
を実行すると、デバイスで実行されているすべてのpostgresクラスターが一覧表示されます例えば:
Ver Cluster Port Status Owner Data directory Log file
9.6 main 5432 online postgres /var/lib/postgresql/9.6/main /var/log/postgresql/postgresql-9.6-main.log
ほとんどの場合、ステータスはダウンしています。 Postgresクラスタとサービスを再起動してみてください
#format is pg_ctlcluster <version> <cluster> <action>
Sudo pg_ctlcluster 9.6 main start
#restart postgres
Sudo service postgres restart
このプロセスが成功しない場合、エラーがスローされます。私のエラーは(あなたは/var/log/postgresql/postgresql-9.6-main.log
でエラーログを見ることができます)
FATAL: could not access private key file "/etc/ssl/private/ssl-cert-snakeoil.key": Permission denied
Try adding `postgres` user to the group `ssl-cert`
postgres
が/var/lib/postgresql/version_no/main
の所有者であることを確認してください。例:Sudo chown postgres -R /var/lib/postgresql/9.6/main/
それは私に起こり、私が誤ってPostgresユーザーを「ssl-cert」グループから削除したことがわかりました。以下のコードを実行して、ユーザーグループの問題を修正し、権限を修正します
#set user to group back with
Sudo gpasswd -a postgres ssl-cert
# Fixed ownership and mode
Sudo chown root:ssl-cert /etc/ssl/private/ssl-cert-snakeoil.key
Sudo chmod 740 /etc/ssl/private/ssl-cert-snakeoil.key
Sudo service postgres restart
あなたはUbuntuの下にいます。 Debianラッパーを使用できます。 pg_ctlcluster 9.6 main start
を試してください(クラスターの名前をmainに変更できます。
別のPostgreSQLバージョンが実行されているかどうかを確認するには、ps -ef | grep postgres
を試してください。
Pg_ctlclusterで始まらない場合。ログを見てください。 Debianベースの場合、デフォルトのロギングは/var/log/postgresql
にあります。
私はいくつかのチェックでこの問題を解決しました
root@biber-OptiPlex-380:/home/biber/kailas/RoR/demo# su - postgres
postgres@biber-OptiPlex-380:~$ psql
psql: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
postgres@biber-OptiPlex-380:~$ service postgresql status
9.5/main (port 5432): down
postgres@biber-OptiPlex-380:~$ service postgresql start
* Starting PostgreSQL 9.5 database server [ OK ]
postgres@biber-OptiPlex-380:~$ service postgresql status
9.5/main (port 5432): online
postgres@biber-OptiPlex-380:~$ psql
psql (9.5.19)
Type "help" for help.
postgres=#