PostgreSQLの初期設定 ~Authentication is required~エラーの解決

PostgreSQLのインストールはしてある。「じゃあとりあえず起動させてみよう」と次のようにスタートコマンドを打つとエラーが出ます。

[dacelo@space pgsql]$ systemctl start postgresql.service
==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===
Authentication is required to manage system services or units.
Multiple identities can be used for authentication:
1.  admin
2.  hogehoge
3.  fugafuga
Choose identity to authenticate as (1-7):

権限を持つユーザーを既存ユーザーの中から選べ…というようなダイアローグが出てくるが、これで選択して終了してからそのユーザーで起動しようとしても、やっぱり失敗する。

広告

[dacelo@space pgsql] $ sudo systemctl status postgresql.service
● postgresql.service - PostgreSQL database server
Loaded: loaded (/usr/lib/systemd/system/postgresql.service; disabled; vendor preset: disabled)
Active: failed (Result: exit-code) since 金 2019-09-06 19:30:04 JST; 10s ago
Process: 55364 ExecStartPre=/usr/bin/postgresql-check-db-dir ${PGDATA} (code=exited, status=1/FAILURE)

9月 06 19:30:04 space systemd[1]: Starting PostgreSQL database server...
9月 06 19:30:04 space systemd[1]: postgresql.service: control process exited, code=exited status=1
9月 06 19:30:04 space systemd[1]: Failed to start PostgreSQL database server.
9月 06 19:30:04 space systemd[1]: Unit postgresql.service entered failed state.
9月 06 19:30:04 space systemd[1]: postgresql.service failed.

これはそういうことではなくて、PostgreSQLの初期設定をしていないのが問題だったのだ。
PostgreSQLを起動する前に、postgresユーザーでinitdbという初期設定作業をする必要がある。

まずpostgresユーザーにスイッチする。

[dacelo@space pgsql]$ sudo -i -u postgres

postgresユーザーになったら、’initdb’コマンドで、DBのパスを指定する。

-bash-4.2$ initdb -D '/var/lib/pgsql/data/'
データベースシステム内のファイルの所有者は"postgres"ユーザでした。
このユーザがサーバプロセスを所有しなければなりません。

データベースクラスタはロケール"ja_JP.UTF-8"で初期化されます。
したがってデフォルトのデータベース符号化方式はUTF8に設定されました。
initdb: ロケール"ja_JP.UTF-8"用の適切なテキスト検索設定が見つかりません
デフォルトのテキスト検索設定はsimpleに設定されました。

ディレクトリ/var/lib/pgsql/dataの権限を設定しています ... ok
サブディレクトリを作成しています ... ok
デフォルトのmax_connectionsを選択しています ... 100
デフォルトの shared_buffers を選択しています ... 32MB
設定ファイルを作成しています ... ok
/var/lib/pgsql/data/base/1にtemplate1データベースを作成しています ... ok
pg_authidを初期化しています ... ok
依存関係を初期化しています ... ok
システムビューを作成しています ... ok
システムオブジェクトの定義をロードしています ... ok
照合順序を作成しています ... ok
変換を作成しています ... ok
ディレクトリを作成しています ... ok
組み込みオブジェクトに権限を設定しています ... ok
情報スキーマを作成しています ... ok
PL/pgSQL サーバサイド言語をロードしています ... ok
template1データベースをバキュームしています ... ok
template1からtemplate0へコピーしています ... ok
template1からpostgresへコピーしています ... ok

警告: ローカル接続向けに"trust"認証が有効です。
pg_hba.confを編集する、もしくは、次回initdbを実行する時に-Aオプショ
ン、または、--auth-localおよび--auth-hostを使用することで変更するこ
とができます。

成功しました。以下を使用してデータベースサーバを起動することができます。

postmaster -D /var/lib/pgsql/data
または
pg_ctl -D /var/lib/pgsql/data -l logfile start

-bash-4.2$ ログアウト

これで起動できるようになっている。

[dacelo@space pgsql]$ sudo systemctl start postgresql.service
[dacelo@space pgsql]$ sudo systemctl status postgresql.service
● postgresql.service - PostgreSQL database server
Loaded: loaded (/usr/lib/systemd/system/postgresql.service; disabled; vendor preset: disabled)
Active: active (running) since 金 2019-09-06 19:36:08 JST; 5s ago
Process: 55582 ExecStart=/usr/bin/pg_ctl start -D ${PGDATA} -s -o -p ${PGPORT} -w -t 300 (code=exited, status=0/SUCCESS)
Process: 55577 ExecStartPre=/usr/bin/postgresql-check-db-dir ${PGDATA} (code=exited, status=0/SUCCESS)
Main PID: 55585 (postgres)
CGroup: /system.slice/postgresql.service
├─55585 /usr/bin/postgres -D /var/lib/pgsql/data -p 5432
├─55586 postgres: logger process
├─55588 postgres: checkpointer process
├─55589 postgres: writer process
├─55590 postgres: wal writer process
├─55591 postgres: autovacuum launcher process
└─55592 postgres: stats collector process

9月 06 19:36:07 space systemd[1]: Starting PostgreSQL database server...
9月 06 19:36:08 space systemd[1]: Started PostgreSQL database server.

接続確認。

[dacelo@space pgsql]$ psql -U postgres
psql (9.2.23)
"help" でヘルプを表示します.

postgres=# quit
postgres-# \q

あとは、ユーザーを作るなりDBを作るなり、DB構築作業をどうぞ。

About: dacelo


Leave a Reply

Your email address will not be published. Required fields are marked *