Mysql
 sql >> Datenbank >  >> RDS >> Mysql

mysqli::mysqli():(HY000/2002):Verbindung zum lokalen MySQL-Server über Socket „MySQL“ nicht möglich (2)

Wenn Sie nur "localhost" verwenden, versucht die MySQL-Clientbibliothek, anstelle einer TCP/IP-Verbindung einen Unix-Domain-Socket für die Verbindung zu verwenden. Der Fehler sagt Ihnen, dass der Socket namens MySQL , kann nicht verwendet werden, um die Verbindung herzustellen, wahrscheinlich weil sie nicht existiert (Fehlernummer 2).

Aus der MySQL-Dokumentation :

Unter Unix behandeln MySQL-Programme den Hostnamen localhost besonders, in einer Weise, die sich wahrscheinlich von dem unterscheidet, was Sie im Vergleich zu anderen netzwerkbasierten Programmen erwarten. Bei Verbindungen zu localhost versuchen MySQL-Programme, eine Verbindung zum lokalen Server herzustellen, indem sie eine Unix-Socket-Datei verwenden. Dies geschieht selbst dann, wenn eine --port- oder -P-Option angegeben wird, um eine Portnummer anzugeben. Um sicherzustellen, dass der Client eine TCP/IP-Verbindung zum lokalen Server herstellt, verwenden Sie --host oder -h, um einen Hostnamenswert von 127.0.0.1 oder die IP-Adresse oder den Namen des lokalen Servers anzugeben. Sie können das Verbindungsprotokoll auch explizit angeben, sogar für localhost, indem Sie die Option --protocol=TCP verwenden.

Es gibt einige Möglichkeiten, dieses Problem zu lösen.

  1. Sie können einfach TCP/IP anstelle des Unix-Sockets verwenden. Sie würden dies tun, indem Sie 127.0.0.1 verwenden statt localhost wenn du dich verbindest. Der Unix-Socket ist jedoch möglicherweise schneller und sicherer zu verwenden.
  2. Sie können den Socket in ändern php.ini :Öffnen Sie die MySQL-Konfigurationsdatei my.cnf um herauszufinden, wo MySQL den Socket erstellt, und legen Sie mysqli.default_socket von PHP fest zu diesem Weg. Auf meinem System ist es /var/run/mysqld/mysqld.sock .
  3. Konfigurieren Sie den Socket beim Öffnen der Verbindung direkt im PHP-Skript. Zum Beispiel:

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