ownCloud 10でMySQLを使用した場合に発生する「データベースへの接続に失敗しました」エラーを修正する

ownCloud 10 の「データベースへの接続に失敗しました」エラーを最も迅速に特定する方法は、ownCloud サーバー自体から同じ MySQL アカウント、データベース名、ホストを使用してテストすることです。ログインに失敗した場合は、まず MySQL の可用性、ネットワーク アクセス、認証情報、または権限を修正してください。ログインに成功した場合は、ownCloud のconfig/config.phpPHPpdo_mysql拡張機能と、PHP が意図したソケットまたは TCP 接続を使用しているかどうかを確認してください。

このガイドでは、Linux 上で MySQL または MariaDB を使用する既存の ownCloud Server 10 インストールについて説明します。サービス名とパッケージコマンドは、オペレーティングシステムとインストールタイプによって異なります。本番環境の設定を編集する前に、構成とデータベースをバックアップしてください。データベースのパスワードを問題報告に含めたり、公開のシェルログに貼り付けたりしないでください。

そのエラーは何を意味していますか?

このメッセージは症状を示すものであり、診断結果を示すものではありません。障害発生時のownCloudログとWebサーバーまたはPHPログを確認してください。根本的な例外の原因として、ドライバの欠落、接続拒否、ログイン拒否、または不明なデータベースが挙げられます。ownCloudのLinuxデータベースガイドでは、PHPのpdo_mysql拡張機能が必要であり、MySQLがローカルにある場合はソケット設定が重要であると指摘しています。また、MySQLコマンドラインクライアントを使用してアクセスをテストすることを推奨しています。

メッセージまたは手がかり確認すべき可能性のあるエリア
could not find driverまたはPDOドライバのエラーウェブPHPランタイムがpdo_mysql有効になっていません。
SQLSTATE[HY000] [2002]または「接続できません」MySQLが停止しているか、ホストまたはポートが間違っているか、ファイアウォールがTCPをブロックしているか、ソケットパスが間違っている可能性があります。
Access denied for userパスワード、アカウントホスト、またはMySQL認証設定が一致しません。
Unknown database設定されたデータベース名がスペルミスであるか、欠落しているか、またはアカウントから表示されていません。

正確なエラーコードは、PHP、MySQL、MariaDB、およびオペレーティングシステムのバージョンによって異なる場合があります。これらは手がかりとして捉え、以下のチェックで原因を確認してください。MySQLのアクセス拒否に関するドキュメントには、アカウントとホストの一致が一般的な原因であると記載されています。

ownCloudホストはMySQLにアクセスできますか?

mysqli が ownCloud サーバー、別のマシン、またはコンテナのいずれで実行されているかを確認してください。Linux の場合は、サービスを確認してください。一般的なユニット名は と ですmysql。mariadbサーバーにインストールされているものを使用してください。

sudo systemctl status mysql
sudo systemctl status mariadb

起動しない場合は、再起動する前にジャーナルまたはデータベースのエラーログを確認してください。構成エラー、ディスク容量不足、データベース復旧の失敗、またはポートの競合により起動できない場合があります。

sudo journalctl -u mariadb --since "30 minutes ago"
sudo systemctl start mariadb

サービス名を適切に置き換えてください。サービスが稼働しているだけでは、ownCloudが認証できることは証明されません。アカウントテストを続行してください。

リモートデータベースの場合、ownCloudホストからDNSと設定済みのTCPポートをテストしてください。MySQLは通常ポート3306でリッスンしますが、デプロイメントによっては別のポートを使用する場合もあります。

getent hosts db.example.net
nc -vz db.example.net 3306

チェックエラーが発生した場合は、DNS、ルーティング、ファイアウォール、またはデータベースリスナーの設定に問題がある可能性があります。可能な限り、プライベートネットワーク経由でownCloudサーバーからの接続のみを許可してください。MySQLをインターネットに公開して、接続を容易にしないでください。

ownCloudホストからデータベースアカウントは正常に動作しますか?

ownCloudが使用するデータベース名、ユーザー、および宛先ホストと同じ名前で、アプリケーションサーバー上でMySQLクライアントを実行します。この-pオプションはパスワードを非公開でプロンプト表示するため、コマンド自体にパスワードを入力する必要がありません。

mysql -u oc_app -p -h localhost owncloud

リモートデータベースの場合は、localhostホスト名に置き換えてください。ログインが成功したら、無害な検証を実行します。

SELECT DATABASE(), CURRENT_USER();
SHOW TABLES;
EXIT;

これは、基本認証と選択したデータベースへのアクセスを確認するものです。失敗した場合は、MySQLが報告する正確なエラーとユーザー名/ホストを確認してください。MySQLはアカウントを照合する際に、ユーザー名とホストをまとめて扱います。また、localhostLinuxでは一般的にUnixソケットが使用され、127.0.0.1強制的にTCPが使用される点にも注意してください。ownCloudの設定で使用されているのと同じ接続方法をテストしてください。

mysql -u oc_app -p -h 127.0.0.1 owncloud

ownCloudのデータベース設定は正しいですか?

config/config.phpownCloudのインストールディレクトリにあるアクティブな設定を確認してください。ownCloudの設定リファレンスには、データベースの種類、名前、ユーザー、パスワードの設定が記載されています。また、データベースガイドにはホストとテーブルのプレフィックスも示されています。一般的なMySQLの設定は次のようになります。

'dbtype' => 'mysql',
'dbname' => 'owncloud',
'dbuser' => 'oc_app',
'dbpassword' => 'REDACTED',
'dbhost' => 'localhost',
'dbtableprefix' => 'oc_',

スペルミス、意図しない空白、古いパスワード、大文字小文字が異なるデータベース名、またはホストが間違ったサーバーを指していないかを確認してください。インスタンスシークレットとデータディレクトリを含む、ファイルの残りの部分はそのまま保持してください。この例で設定全体を置き換えないでください。

編集後、インストール先のPHPバイナリを使用して、ファイルが有効なPHPファイルであることを確認してください。

php -l /var/www/owncloud/config/config.php

インストールパスは異なる場合があります。 へのアクセスを制限してくださいconfig.php。データベースの認証情報やその他の機密情報が含まれています。

PHPのMySQLドライバはWebアプリケーションで有効になっていますか?

ownCloud 10 のデータベースガイドには、pdo_mysqlPHP のバージョンとロードされたモジュールの確認が必要です。

php -v
php -m | grep -i pdo_mysql

モジュールが見つからない場合は、PHP のバージョンに対応する MySQL PDO パッケージをインストールしてから、該当する Web サーバーまたは PHP-FPM プールを再起動またはリロードしてください。パッケージ名は、Ubuntu、Debian、SUSE、Red Hat、およびコンテナ イメージによって異なります。コマンドライン PHP で有効になっているモジュールが、Apache または PHP-FPM で有効になっていない場合があるため、Web ランタイムの PHP 設定も確認してください。PHP 設定情報が公開される診断ページは残さないようにしてください。

ソケットまたはホストの設定が間違っている可能性はありますか?

Linux では、MySQL クライアントは Unix ソケットを使用するlocalhost場合があります。一方、127.0.0.1ownCloud は TCP を使用します。MySQL が同じマシン上にある場合は、PHP のmysql.default_socket設定がデータベース サーバーが実際に作成したソケット ファイルを指しているかどうかを確認してください。データベース サーバーのソケットとポートの設定を PHP の設定および ownCloud のホスト値と比較してください。

MySQLがリモートにある場合、localhostデータベースサーバーではなくownCloudマシンが対象となります。代わりに、アクセス可能なデータベースホスト名を設定し、MySQLが目的のインターフェースでリッスンしていることを確認してください。ファイアウォールやローカル専用設定によっては、bind-addressローカルデータベースコマンドが機能する場合でも、リモートアクセスが妨げられることがあります。アプリケーションサーバーのプライベートアドレスへのアクセスを制限してください。

MySQLアカウントと権限はクライアントホストと一致していますか?

MySQLアカウントにはユーザー名とホストコンポーネントが含まれます。したがって、'oc_app'@'localhost'と は'oc_app'@'10.0.0.25'異なるアカウントエントリです。管理者接続を使用して、利用可能なアカウントと、一致する必要があるアカウントの権限を確認してください。

SELECT User, Host FROM mysql.user;
SHOW GRANTS FOR 'oc_app'@'localhost';

アカウントが存在せず、データベースが既に存在する場合は、専用アカウントを作成し、ownCloudデータベースに対する権限のみを付与してください。サンプルデータベース、ホスト、パスワードを実際の値に置き換えてください。

CREATE USER 'oc_app'@'localhost' IDENTIFIED BY 'replace-with-a-strong-password';
GRANT ALL PRIVILEGES ON owncloud.* TO 'oc_app'@'localhost';

リモートデータベースの場合は、アカウント定義にアプリケーションサーバーの実際のホスト名を使用してください。一時的な解決策としてワイルドカードホストやグローバル権限を使用することは避け、ownCloudをMySQLのroot権限で実行しないでください。アカウントが既に存在する場合は、重複アカウントを作成するのではなく、権限を確認し、パスワードを意図的にリセットしてください。ownCloudサーバーからログインを再テストしてください。

修理が完了したことをどのように確認しますか?

項目を一つずつ変更した後、ownCloudホストから同じMySQLコマンドラインログインが機能すること、Web PHPランタイムが動作していることpdo_mysql、ownCloudログに接続例外が記録されていないことを確認してください。サイトをリロードし、インスタンスが再び利用可能になった後にのみ、基本的な読み書き操作を実行してください。

コマンドラインログインは成功してもownCloudが起動しない場合は、Webプロセスで使用されているホスト形式、アカウント、データベース名、PHPランタイムを、正常に動作しているテスト環境と比較してください。リクエスト時のWebサーバーまたはPHP-FPMのログを確認してください。既にサーバーがインストールされている場合は、既存の設定を慎重に修復してください。トラブルシューティングの手っ取り早い方法として、データベースを削除したり、インストールをやり直したりしないでください。

詳細については、ownCloud Server 10.16 のデータベース構成およびトラブルシューティングガイド、ownCloud 10.15 の構成リファレンス、および MySQL の公式接続トラブルシューティングとアクセス拒否エラーに関するガイドを参照してください。サービス名、パッケージコマンド、および正確な設定は、オペレーティングシステムとデプロイメントによって異なります。

コメントを残す

ノジマオンラインの個人情報漏えい:対象情報と利用者が確認すべき対策

ノジマオンラインの個人情報漏えい:対象情報と利用者が確認すべき対策

ノジマは2026年11月2日、会員管理システムへの不正アクセスと約700万件の情報漏えいを公表。対象サイト、暗号化パスワードとカード情報の違い、サービス休止状況、利用者の対策を11月3日時点で整理します。

ネットワーク上のデバイスを見つけるためのベスト10ピングスキャンツール

ネットワーク上のデバイスを見つけるためのベスト10ピングスキャンツール

迅速なLAN検出、クロスプラットフォームスキャン、IPアドレス管理のための10種類のpingスイープツールを比較します。スイープで何がわかるのか、何がわからないのかを理解しましょう。

パフォーマンス追跡に最適なネットワーク管理ツール6選

パフォーマンス追跡に最適なネットワーク管理ツール6選

SNMP対応範囲、マッピング、アラート、導入モデル、コストのトレードオフなど、パフォーマンス監視のための6つのネットワーク管理ツールを比較します。

Ping Monitor:ネットワーク可用性を確認するための7つの無料オープンソースツール

Ping Monitor:ネットワーク可用性を確認するための7つの無料オープンソースツール

フルネットワークスイートからレイテンシに特化したプローブまで、7つの無料オープンソースpingモニターを比較し、可用性、パケット損失、履歴など、ニーズに最適なものを選びましょう。

Windows、iOS、Android向けのおすすめWi-Fiアナライザー

Windows、iOS、Android向けのおすすめWi-Fiアナライザー

Windows、iPhone、Android向けのWi-Fiアナライザーのおすすめを比較検討しましょう。チャネルの混雑状況、信号カバレッジ、ヒートマップ、ネットワークのトラブルシューティングツールなどが含まれています。

安全なファイル転送のための最適なSFTPサーバーソフトウェア

安全なファイル転送のための最適なSFTPサーバーソフトウェア

WindowsおよびLinux向けの信頼性の高いSFTPサーバーソフトウェア(OpenSSH、Bitvise、SolarWinds、SFTPGoなど)を比較検討しましょう。セキュリティとファイル転送のニーズに最適なソフトウェアを見つけてください。

デバイスとIPアドレスを検出するためのベストネットワークスキャナーツール10選

デバイスとIPアドレスを検出するためのベストネットワークスキャナーツール10選

迅速なデバイス検出、クロスプラットフォームIPスキャン、エンタープライズIPAMを実現するネットワークスキャナーツールを比較し、それぞれのオプションをネットワークに合わせて選択するためのガイダンスを提供します。

ネットワークチーム向けのおすすめIPアドレス管理ツール7選

ネットワークチーム向けのおすすめIPアドレス管理ツール7選

サブネット検出、DNSとDHCPの連携、ネットワークインベントリ、オープンソースIPAMに対応した7つのIPアドレス管理ツールを比較します。

ネットワーク監視のベストプラクティス:追跡すべき項目と使用すべきツール

ネットワーク監視のベストプラクティス:追跡すべき項目と使用すべきツール

明確なデバイスカバレッジ、有用なパフォーマンス指標、実用的なアラート、そしてSolarWinds NPM、PRTG、OpManagerの比較機能を備えた、実用的なネットワーク監視システムを構築します。

デバイス、ホスト、トラフィックを監視するためのLinuxネットワーク監視ツール6選

デバイス、ホスト、トラフィックを監視するためのLinuxネットワーク監視ツール6選

SNMPデバイス検出、インターフェースグラフ、ホストメトリック、サービスチェック、トラフィックフローに関する6つのLinuxネットワーク監視ツールを比較します。