PHP MySQLi クラスを使用して MySQL データベースに接続しようとすると、次のエラー発生:
mysqli::mysqli(): (HY000/2002): Can't connect to local MySQL server through socket 'MySQL' (2)
このエラー メッセージは、MySQL クライアント ライブラリが「MySQL」という名前の Unix ドメイン ソケット経由でサーバーに接続しようとしているが、ソケットが存在しないことを示しています。
MySQL ドキュメントによると、クライアント ライブラリはホスト名「localhost」を Unix システム上で特別に扱います。デフォルトでは、ポート番号が指定されている場合でも、Unix ソケット ファイルを使用して接続を試行します。
このエラーを解決するには、次のオプションを検討してください:
1. TCP/IP を使用します:
接続を確立するときに、「localhost」の代わりにホスト名として 127.0.0.1 を使用します。これにより、ライブラリは TCP/IP 接続を使用するようになり、信頼性と移植性が向上します。
2. php.ini のソケットを変更します:
MySQL 構成ファイル (my.cnf) を見つけて、MySQL がソケットを作成するパスを見つけます。次に、PHP の mysqli.default_socket ディレクティブを php.ini ファイル内のそのパスに設定します。
3. PHP スクリプトでソケットを構成する:
接続を開くときに PHP スクリプトでソケットを直接指定します:
$db = new MySQLi('localhost', 'kamil', '***', '', 0, '/var/run/mysqld/mysqld.sock');
リモートから接続する場合IP アドレス。MySQL データベースでの外部接続に必要な権限を持つユーザーを作成していることを確認してください。
以上がPHP スクリプトがソケット経由で MySQL サーバーに接続できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。