ホームページ >データベース >mysql チュートリアル >私の PHP コードがソケット経由でローカル MySQL サーバーに接続できないのはなぜですか?

私の PHP コードがソケット経由でローカル MySQL サーバーに接続できないのはなぜですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-11 08:08:10773ブラウズ

Why Can't My PHP Code Connect to the Local MySQL Server Through the Socket?

ソケット経由で MySQL サーバーに接続できません: 一般的な PHP エラー

PHP を使用して MySQL データベースへの接続を確立しようとしたときmysqli クラスでは、次のエラーが発生する可能性があります:

mysqli::mysqli(): (HY000/2002): Can't connect to local MySQL server through socket 'MySQL' (2)

このエラーは示唆していますMySQL クライアント ライブラリが接続に TCP/IP 接続ではなく Unix ドメイン ソケットを使用しようとしているということです。ただし、「MySQL」という名前のソケットが存在しないか、アクセスできません。

エラーについて

MySQL 接続のホスト名として「localhost」を使用する場合、クライアント ライブラリは自動的に Unix ソケット経由で接続を試みます。これは、Unix ベースのシステムでは、より高速で安全な接続方法です。ただし、ソケットが適切に構成されていない場合、またはソケットが存在しない場合、接続は失敗します。

問題を解決する方法

この問題を解決するには、次の方法があります。

  • ホスト名を指定します: を使用します「localhost」の代わりにホスト名として 127.0.0.1 またはローカル サーバーの IP アドレスを使用します。これにより、クライアントはソケットの代わりに TCP/IP を使用するようになります。
  • ソケット パスを設定します: MySQL ソケットへのパス ("/var/run/mysqld/mysqld. sock" は一般的な場所です)、PHP の mysqli.default_socket 設定オプションをそれに設定しますpath.
  • ソケットを直接構成する: ソケット パラメーターを使用して接続を確立するときに、PHP スクリプトでソケット パスを直接指定します。例:
$db = new MySQLi('localhost', 'kamil', '***', '', 0, '/var/run/mysqld/mysqld.sock');

これらのソリューションのいずれかを実装すると、MySQL 接続が正しく確立され、「ソケット経由でローカル MySQL サーバーに接続できません」エラーが排除されます。

以上が私の PHP コードがソケット経由でローカル MySQL サーバーに接続できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。