sql >> Database >  >> RDS >> Mysql

mysqli::mysqli():(HY000/2002):Kan geen verbinding maken met lokale MySQL-server via socket 'MySQL' (2)

Wanneer u alleen "localhost" gebruikt, probeert de MySQL-clientbibliotheek een Unix-domeinsocket te gebruiken voor de verbinding in plaats van een TCP/IP-verbinding. De fout geeft aan dat de socket, genaamd MySQL , kan niet worden gebruikt om de verbinding tot stand te brengen, waarschijnlijk omdat deze niet bestaat (foutnummer 2).

Uit de MySQL-documentatie :

Op Unix behandelen MySQL-programma's de hostnaam localhost speciaal, op een manier die waarschijnlijk anders is dan wat u verwacht in vergelijking met andere netwerkgebaseerde programma's. Voor verbindingen met localhost proberen MySQL-programma's verbinding te maken met de lokale server met behulp van een Unix-socketbestand. Dit gebeurt zelfs als een --port of -P optie wordt gegeven om een ​​poortnummer op te geven. Om ervoor te zorgen dat de client een TCP/IP-verbinding maakt met de lokale server, gebruikt u --host of -h om een ​​hostnaamwaarde van 127.0.0.1 op te geven, of het IP-adres of de naam van de lokale server. Je kunt het verbindingsprotocol ook expliciet specificeren, zelfs voor localhost, door de --protocol=TCP optie te gebruiken.

Er zijn een paar manieren om dit probleem op te lossen.

  1. Je kunt gewoon TCP/IP gebruiken in plaats van de Unix-socket. U zou dit doen door 127.0.0.1 . te gebruiken in plaats van localhost wanneer u verbinding maakt. De Unix-socket is misschien wel sneller en veiliger in gebruik.
  2. Je kunt de socket wijzigen in php.ini :open het MySQL-configuratiebestand my.cnf om te vinden waar MySQL de socket maakt en PHP's mysqli.default_socket in te stellen naar dat pad. Op mijn systeem is het /var/run/mysqld/mysqld.sock .
  3. Configureer de socket direct in het PHP-script bij het openen van de verbinding. Bijvoorbeeld:

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


  1. Een lokale SQL Server-database instellen

  2. Zijn PL/SQL-variabelen in cursors in feite hetzelfde als bindparameters?

  3. Begrijp de rol van data-architecten in datagovernance

  4. Hoe de prestaties voor bulk-INSERT's naar ODBC-gekoppelde tabellen in Access te verbeteren?