sql >> データベース >  >> RDS >> Mysql

mysqli ::mysqli():(HY000 / 2002):ソケット「MySQL」を介してローカルMySQLサーバーに接続できません(2)

    「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オプションを使用して、ローカルホストの場合でも接続プロトコルを明示的に指定することもできます。

    この問題を解決する方法はいくつかあります。

    1. Unixソケットの代わりにTCP/IPを使用できます。これを行うには、127.0.0.1を使用します localhostの代わりに 接続するとき。ただし、Unixソケットは、より速く、より安全に使用できる可能性があります。
    2. ソケットはで変更できますphp.ini :MySQL構成ファイルmy.cnfを開きます MySQLがソケットを作成する場所を見つけ、PHPのmysqli.default_socketを設定します その道へ。私のシステムでは、/var/run/mysqld/mysqld.sock
    3. 接続を開くときに、PHPスクリプトで直接ソケットを構成します。例:

      $db = new MySQLi('localhost', 'kamil', '***', '', 0, 
                                    '/var/run/mysqld/mysqld.sock')
      


    1. PostgreSQL:psqlコマンドラインユーティリティを使用する場合のWindowsでのエンコーディングの問題

    2. Oracleで文字列を複数の行に分割する

    3. ナンバーシリーズジェネレータチャレンジソリューション–パート3

    4. 列内の重複するエントリを検索する