接続の難問を明らかにする: MySQL ソケット接続を理解する
PHP の mysqli クラスを使用して MySQL データベース接続を確立しようとすると、次のような問題が発生する可能性があります。エラー: 「[ソケット 'MySQL' (2) を介してローカル MySQL サーバーに接続できません]」。このエラーは、MySQL クライアントが TCP/IP 接続ではなく「localhost」の Unix ドメイン ソケット経由で接続しようとしたときに発生します。
Unix ソケットと TCP/IP 接続の比較
デフォルトでは、Unix システム上の MySQL プログラムは、「localhost」に接続するときに TCP/IP 接続よりも Unix ドメイン ソケットを優先します。ただし、ソケットが使用できない場合、または特に TCP/IP 接続が必要な場合は、別の方法を使用する必要があります。
問題の解決
いくつかの解決策でこの問題に対処できます。問題:
1.明示的な TCP/IP 接続:
接続文字列で「localhost」の代わりに、IP アドレス「127.0.0.1」またはローカル サーバーのホスト名を使用します。これにより、クライアントは強制的に TCP/IP 接続を確立します。
2. PHP 構成の変更:
MySQL 構成ファイル (my.cnf) を見つけて、MySQL がソケットを確立するパスを見つけます。 PHP の mysqli.default_socket を php.ini.
3 のこのパスに設定します。明示的なソケット構成:
PHP スクリプトで接続を開くときにソケット パスを直接指定します:
$db = new MySQLi('localhost', 'kamil', '***', '', 0, '/var/run/mysqld/mysqld.sock');
結論
MySQL で使用される接続メカニズムを理解すると、このエラーを克服してデータベース接続を正常に確立できます。 Unix ドメイン ソケットを使用するとパフォーマンスとセキュリティの利点が得られる可能性がありますが、場合によっては明示的な TCP/IP 接続が必要になる場合があることに注意してください。
以上がソケット経由でローカル MySQL サーバーに接続できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。