はじめに
AWSのEC2(Amazon Linux 2023)を使い、PHP 8.3 + PostgreSQL 15 で Laravel 環境を構築していた際、php artisan migrate でハマったポイントをまとめます。
1. SQLSTATE[08006] Ident authentication failed
Laravelの .env を正しく設定しているのに、接続拒否されるパターンです。
原因:
PostgreSQLのデフォルト認証方式が ident になっているため、OSユーザーとDBユーザーが一致しないと弾かれます。
解決策:
pg_hba.conf を編集し、認証方式を trust (開発用) または md5 に変更します。
sudo nano /var/lib/pgsql/data/pg_hba.conf
# 修正後
host all all 127.0.0.1/32 trust
※今回は開発環境なので接続を優先して trust にしましたが、本番環境ではパスワード認証(md5 等)にするのが定石です!
設定後は必ず再起動を忘れずに↓
sudo systemctl restart postgresql
2. SQLSTATE[42501] Insufficient privilege: permission denied for schema public
接続はできたのに、テーブル作成時にエラーが出るパターンです。
原因:
PostgreSQL 15以降、新規ユーザーには public スキーマへの CREATE 権限がデフォルトで付与されなくなったためです。
解決策:
データベースにログインし、対象ユーザーに権限を付与します。
sudo -u postgres psql -d {db名を入れてね}
-- 権限付与SQL
GRANT ALL ON SCHEMA public TO {user名を入れてね};
まとめ
①pg_hba.conf で認証の門番を説得する。
②GRANT 文でテーブルを作る許可をもらう。
この2段階の設定で、無事、migrate に成功しました!
先述のようにpg_hba.confは、今回は開発環境なので接続を優先して trust にしましたが、本番環境ではパスワード認証(md5 等)にしましょう。