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"?
Sudo netstat -nlp | grep 5432
を使用してステータスを表示しましたが、何も表示されませんでした。オンラインで検索したところ、誰かがpg_hba.conf
を変更するように言ったが、このファイルをlocate
できない。また、このコマンドSudo ln -s /tmp/.s.PGSQL.5432 /var/run/postgresql/.s.PGSQL.5432
も試しました。動作しません。
このエラーは、psqlユーティリティがデータベースサーバーに接続するためのソケットを見つけることができないことを示しています。データベースサービスをバックグラウンドで実行していないか、ソケットが別の場所にあるか、pg_hba.conf
を修正する必要がある可能性があります。
コマンドは、オペレーティングシステムによって異なる場合があります。しかし、ほとんどの* ixシステムでは次のように動作し、実行中のすべてのプロセスからpostgresを検索します
ps -ef | grep postgres
私のシステム、mac osxでは、これが吐き出されます
501 408 1 0 2Jul15 ?? 0:21.63 /usr/local/opt/postgresql/bin/postgres -D /usr/local/var/postgres -r /usr/local/var/postgres/server.log
最後の列は、サーバーの起動に使用されるコマンドとオプションを示しています。
以下を使用して、postgresサーバーを起動するために利用可能なすべてのオプションを確認できます。
man postgres
そこから、オプション-D
と-r
がそれぞれdatadir
とlogfilename
であることがわかります。
find
を使用して、/tmp
のどこかにあるソケットの場所を検索します。
Sudo find /tmp/ -name .s.PGSQL.5432
Postgresが実行されており、ソケット接続を受け入れている場合、上記はソケットの場所を示しているはずです。私のマシンでは、次のようになりました。
/tmp/.s.PGSQL.5432
次に、このファイルの場所を明示的に使用してpsql経由で接続してみてください。
psql -h /tmp/ dbname
ソケットが見つからないが、サービスが実行されていることを確認したら、pg_hba.confファイルでローカルソケットが許可されていることを確認します。
datadir
を参照すると、pg_hba.conf
ファイルが見つかります。
デフォルトでは、ファイルの下部近くに次の行が表示されます。
# "local" is for Unix domain socket connections only
local all all trust
表示されない場合は、ファイルを変更して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/
それは私に起こり、私が「ssl-cert」グループから誤ってPostgresユーザーを削除したことが判明しました。以下のコードを実行して、ユーザーグループの問題と権限を修正します
#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
# now postgresql starts! (and install command doesn't fail anymore)
Sudo service postgres restart
同様の問題に何度か遭遇しました。通常、この tutorial に従ってPostgreSQLの新規インストールを行うだけで、データを失うという犠牲を払って問題を解決します。
私は今日、本当の修正を取得することに決めました。 PostgreSQLを再起動すると、ubuntuで解決しました。 Sudo /etc/init.d/postgresql restart
解決しました!何が起こったのかはわかりませんが、すべてのものを削除して再インストールしました。これは、Sudo apt-get --purge remove postgresql\*
およびdpkg -l | grep postgres
を削除するために使用したコマンドです。後者は、クリーンでない場合にすべてのパケットを見つけることです。
Devuan ascii(Debianかもしれませんか?)でも同じ問題がありました。設定ファイル/etc/postgresql/9.6/main/postgresql.conf
には、デフォルトでunix_socket_directories
を指すディレクティブ/var/run/postgresql
が含まれています。これを/tmp
に変更すると、ほとんどのクライアントがデフォルトで表示されますが、修正されました。
私は同じ問題に直面していた
Sudo su - postgres
initdb --locale en_US.UTF-8 -D /var/lib/postgres/data
exit
Sudo systemctl start postgresql
Sudo systemctl status postgresql
これは私のために働いた。
同様の問題があり、問題は設定ファイルpg_hba.confにありました。以前、サーバーを起動しようとしてエラーが発生するような変更をいくつか行っていました。追加の追加をコメントアウトすることで問題は解決しました。
したがって、Node.jsアプリ(PostgresとSequelizeを使用)で作業している私と仲間にとっては、
brew install postgresql
(私たちの1人はpostgresを失い、1人はそうではありませんでしたが、上記と同じエラーメッセージを受け取っていました)
brew services start postgresql
****(Homebrewを使用してpostgresを起動します)
createdb <name of database in config.json file>
node_modules/.bin/sequelize db:migrate
npm start
ちょっとだけ追加したい:インスタンスがソケットで苦情を言っている場合、unix_socket_directories
で/data/postgresql.conf
に設定されている可能性のある/tmp
ファイルを確認することもできます。サードパーティのディストリビューションを使用しています。これを/var/run/postgresql
に変更して、サービスを再起動できます。また、/var/run
にpostgresql
dirを作成する必要があります(subsys/postgresql-9.6
に/var/lock
が存在しない場合)(postgresql 9.6で機能します)。
エラーは、Postgresサーバーが実行されていないことを意味します。開始してみてください:
Sudo systemctl start postgresql
サーバーが起動時に起動することを確認します。
Sudo systemctl enable postgresql
debianのクイックハウツー:
/etc/postgresql/10/main/postgresql.conf
を編集*/etc/postgresql/10/main/pg_hba.conf
を編集し、最後にHost all all 0/0 md5
で行を追加しますpostgres=# CREATE ROLE remoteuser LOGIN WITH PASSWORD 'foo'
Sudo /etc/init.d/postgresql restart
変更が有効になります
psql --Host=ipofserver --port=5432 --username=remoteuser --password --dbname=mydb
を使用してクライアント側からログインする
thatsは、psqlクライアントからサーバー上のpostgresデータベースにリモートでアクセスする方法
例えば、それは何かを引き起こす可能性があります、私の問題は構成ファイルのタイプミスのために引き起こされました。一部の人々は証明書ファイルが原因であると言い、別のグループは一致しない地元の人々が原因であると言います。
問題に関する解決策が見つからない場合は、postgresを削除して再インストールします。これが最良の解決策です。
Postgresqlの新規インストール中。デフォルトでは、ユーザー名とパスワードは「postgres」として割り当てられます。このRDBMSが提供する機能は、新しいユーザーのロールを追加し、データベースを作成することです。このようなエラーが発生する場合:
デフォルトのユーザー名でログイン:
root @ kalilinux:〜#須藤-i -u postgres
対話型プロンプトのype psql
postgres @ kalilinux:〜$ psql
プロンプトの使用を終了するには
\ q
新しいユーザーロールを作成するには
postgres @ kalilinux:〜$ createuser --interactive
これで、インタラクティブなpsqlシェルになりました。楽しい。ユーザー名からログインし、シェルにpsqlと入力することを忘れないでください。
このエラーメッセージに関する私の問題は、キーとpem証明書に対する誤ったアクセス許可にあり、それらを操作しました。私を大いに助けたのは:/var/log/postgresql/postgresql-9.5-main.logすべてのエラーです。
ファイルシステムをチェックしてディスクが完全にいっぱいになったため、データベースを起動できなかったため、この問題を解決しました。
unixドメインソケット上の接続"/var/run/postgresql/.s.PGSQL.5432" ?
一連のトラブルシューティングを試してみましたが、ディスクの使用状況を確認し、使用率が100%であることがわかりました。
df -h
cd /var/log/odoo/
cat /dev/null > odoo-server.log
reboot
同じ問題がありました。クラスタが存在しない場合、ソケットは存在しないようです。
デフォルトのロケールが設定されていないため、インストール中にデフォルトのクラスター作成が失敗しました。