sql >> データベース >  >> RDS >> PostgreSQL

PostgreSQL:なぜpsqlがサーバーに接続できないのですか?

    エラーは、psqlユーティリティがデータベースサーバーに接続するためのソケットを見つけることができないことを示しています。データベースサービスがバックグラウンドで実行されていないか、ソケットが別の場所にあるか、またはpg_hba.confである可能性があります。 修正する必要があります。

    ステップ1:データベースが実行されていることを確認します

    コマンドは、オペレーティングシステムによって異なる場合があります。ただし、ほとんどの* 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

    ステップ2:postgresサービスが実行されている場合

    findを使用する /tmpのどこかにあるはずのソケットの場所を検索します

    sudo find /tmp/ -name .s.PGSQL.5432
    

    postgresが実行中であり、ソケット接続を受け入れている場合、上記はソケットの場所を示しているはずです。私のマシンでは、次のようになりました:

    /tmp/.s.PGSQL.5432
    

    次に、このファイルの場所を明示的に使用して、psql経由で接続してみてください。例:

    psql -h /tmp/ dbname
    

    ステップ3:サービスは実行されているが、ソケットが表示されない場合

    ソケットが見つからないが、サービスが実行されていることを確認する場合は、pg_hba.confファイルでローカルソケットが許可されていることを確認してください。

    datadirを参照します pg_hba.confが見つかります ファイル。

    デフォルトでは、ファイルの下部近くに次の行が表示されます。

    # "local" is for Unix domain socket connections only
    local       all       all       trust
    

    表示されない場合は、ファイルを変更して、postgresサービスを再起動できます。



    1. SQLServer2008の垂直方向のデータから水平方向へ

    2. 非インタラクティブ形式でOpatchを実行する方法

    3. varchar2(n BYTE | CHAR)デフォルト->CHARまたはBYTE

    4. SQLServerデータベース内のすべてのユーザー定義関数を返す2つの方法