Windows11でDocker Desktopを利用してNextcloudを構築する際、管理アカウント作成時に「SQLSTATE[08006] [7] connection to server at ‘db’ … password authentication failed for user ‘nextcloud’」というエラーが出ることがあります。これはNextcloudコンテナからデータベースコンテナ(PostgreSQLやMariaDB)への接続が認証エラーになっていることを示しています。ここでは初めてサーバー構築を行う方でも分かるように、原因と対策を整理して解説します。
原因1:データベースユーザー名・パスワードの不一致
最もよくある原因は、Nextcloudが接続しようとしているデータベースのユーザー名やパスワードが、実際にデータベースに設定されているものと異なっている場合です。
Docker Composeを利用している場合、環境変数として設定されているNEXTCLOUD_DB_USERやNEXTCLOUD_DB_PASSWORDと、dbコンテナのPOSTGRES_USERやPOSTGRES_PASSWORDが一致しているか確認してください。
原因2:データベースコンテナの初期化が完了していない
Nextcloudコンテナが起動してすぐに管理アカウント作成画面を開くと、データベースコンテナの初期化が完了していないことがあります。この場合、接続は可能でも認証エラーとして扱われることがあります。
対策として、docker-compose logs dbでデータベースの起動状況を確認し、Ready状態になるまで待ってからNextcloudをブラウザでアクセスしてください。
原因3:Dockerネットワーク設定やホスト名の問題
Nextcloudコンテナがdbコンテナを『db』というホスト名で参照できない場合があります。docker network lsで使用ネットワークを確認し、docker-compose.ymlのサービス名とネットワークが正しいか確認します。
対策手順
- docker-compose.ymlを確認し、環境変数NEXTCLOUD_DB_USER、NEXTCLOUD_DB_PASSWORD、NEXTCLOUD_DB_NAMEがdbコンテナの設定と一致しているか確認
- dbコンテナを再起動し、初期化ログを確認する
- Nextcloudコンテナを再起動してブラウザで再度管理アカウント作成画面にアクセス
- 必要に応じてdocker exec -it db psql -U <ユーザー名> -d <データベース名> で手動ログインし、パスワードが正しいか確認
注意点
- 環境変数を変更した場合は、dbコンテナを初期化し直す必要がある場合があります
- 既存データがある場合は初期化前にバックアップしてください
- NextcloudのバージョンやDockerイメージにより必要な環境変数が微妙に異なる場合があります
まとめ
Nextcloud管理アカウント作成時のSQL認証エラーは、主にユーザー名・パスワードの不一致、データベース初期化未完了、Dockerネットワークやホスト名の不一致が原因です。まずdocker-compose.ymlの設定を確認し、dbコンテナが正しく起動しているか確認してください。必要であればdbに直接接続して認証情報をテストすることも有効です。

コメント