興味を持ち始めました。https://www.postgresql.org/docs/9.6/runtime.htmlテストと開発のためにローカルpostgresqlサーバーを設定するために使用されます。私はすでにpostgresql
パッケージをインストールしており、postgres
ユーザーはすでに存在し、postgresqlサーバーはすでに127.0.0.1:5432
。
以前は、このコマンドを使用してリモートのpsql
postgresqlデータベースに接続していましたが、ローカルのpostgresqlデータベースを設定した記憶がないため、これは奇妙です。
データベースに接続しようとしていますが、psql -h 127.0.0.1 -p 5432
パスワードの入力を求められます。空のパスワードを入力すると無効です。私もpostgres
ユーザーになりましたが、su postgres
パスワードを再入力するように求められました。
サーバーデータディレクトリの場所がわかりません。データベースクラスタの作成提案されていますが、/usr/local/pgsql/data
ローカル/usr/local/pgsql
サーバーを設定しようとしたときに作成する前は存在しませんでした。
私の最後の質問は次のとおりです。
- 私のローカルコンピュータでpostgresqlサーバーが実行されるのはなぜですか?
関連する質問は次のとおりです。
- サーバーのデータディレクトリを見つける方法は? (ログが含まれていることを願っています。)
postgres
ユーザーがいつ作成されたかを確認する方法は?- データベースとユーザーのパスワードを回復する方法は
postgres
? - または、データベースパスワードを回復せずにデータベースの内容を表示できますか?
ベストアンサー1
apt-get install postgresql
ある瞬間逃げたようですね。この場合、DebianのデフォルトのPostgreSQL設定があるかもしれません。これに関するいくつかの情報は次のとおりです。Debian Wiki で見つけることができます。いくつかはにあります/usr/share/doc/postgresql-common/README.Debian.gz
。
Debian 設定は、複数の「クラスタ」(PostgreSQL インスタンスの実行と複数の異なる PostgreSQL バージョン)をサポートします。コンピュータに何があるかを確認するには、次の手順を実行しますpg_lsclusters
。
$ pg_lsclusters
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
認証のデフォルト設定(選択済み/etc/postgresql/«version»/«cluster-name»/pg_hba.conf
- おそらく/etc/postgresql/9.6/main/pg_hba.conf
)は、ローカルユーザーが "ident"を使用して認証することです。つまり、実行中のユーザーを確認し、パスワードプロンプトなしでUnixユーザー名で認証しますpsql
。したがって、データベースに入るには、次の作業が必要です。
$ sudo -u postgres psql template1
ローカルUnixソケットの代わりにTCP接続を使用するように強制するため、コマンドは機能しません。 (この-p
オプションは引き続き使用できますが、-p 5432
デフォルト値なので省略しました。)基本認証はUnixソケットでのみ機能します。
PS:Debian PostgreSQLの設定はとても素晴らしいです。私は個人的にこのパッケージを使用しており、必ずしも必要でない限り(例えば、PostgreSQLの特定のバージョンを購入するために)削除し、アップストリームパッケージをインストールするよりも使い続けることをお勧めします。