「localhost」だけを使用すると、MySQLクライアントライブラリは、TCP/IP接続の代わりにUnixドメインソケットを接続に使用しようとします。エラーは、MySQL
と呼ばれるソケットであることを示しています。 、接続を確立するために使用することはできません。おそらく、接続が存在しないためです(エラー番号2)。
MySQLドキュメント から :
Unixでは、MySQLプログラムはホスト名localhostを特別に扱いますが、他のネットワークベースのプログラムと比較すると、予想とは異なる可能性があります。ローカルホストへの接続の場合、MySQLプログラムはUnixソケットファイルを使用してローカルサーバーに接続しようとします。これは、ポート番号を指定するために--portまたは-Pオプションが指定されている場合でも発生します。クライアントがローカルサーバーへのTCP/IP接続を確実に確立するには、-hostまたは-hを使用して、ホスト名の値127.0.0.1、またはローカルサーバーのIPアドレスまたは名前を指定します。 --protocol =TCPオプションを使用して、ローカルホストの場合でも接続プロトコルを明示的に指定することもできます。
この問題を解決する方法はいくつかあります。
- Unixソケットの代わりにTCP/IPを使用できます。これを行うには、
127.0.0.1
を使用しますlocalhost
の代わりに 接続するとき。ただし、Unixソケットは、より速く、より安全に使用できる可能性があります。 - ソケットは
で変更できます php.ini
:MySQL構成ファイルmy.cnf
を開きます MySQLがソケットを作成する場所を見つけ、PHPのmysqli.default_socket
を設定します その道へ。私のシステムでは、/var/run/mysqld/mysqld.sock
。 -
接続を開くときに、PHPスクリプトで直接ソケットを構成します。例:
$db = new MySQLi('localhost', 'kamil', '***', '', 0, '/var/run/mysqld/mysqld.sock')