sql >> Databáze >  >> RDS >> Mysql

mysqli::mysqli():(HY000/2002):Nelze se připojit k místnímu serveru MySQL přes socket 'MySQL' (2)

Když použijete pouze "localhost", klientská knihovna MySQL se pokusí použít pro připojení soket domény Unix místo připojení TCP/IP. Chyba vám říká, že soket s názvem MySQL , nelze použít k vytvoření připojení, pravděpodobně proto, že neexistuje (chyba číslo 2).

Z dokumentace MySQL :

Na Unixu programy MySQL zacházejí s názvem hostitele localhost speciálně, v away, který se pravděpodobně liší od toho, co očekáváte ve srovnání s jinými programy založenými na síti. Pro připojení k localhost se programy MySQL pokoušejí připojit k místnímu serveru pomocí souboru soketu Unix. K tomu dochází, i když je zadána volba --port nebo -P pro zadání čísla portu. Chcete-li zajistit, aby klient vytvořil připojení TCP/IP k místnímu serveru, použijte --host nebo -h k zadání hodnoty názvu hostitele 127.0.0.1 nebo IP adresy nebo názvu místního serveru. Můžete také explicitně specifikovat protokol připojení, a to i pro localhost, pomocí volby --protocol=TCP.

Existuje několik způsobů, jak tento problém vyřešit.

  1. Místo Unixového socketu můžete použít TCP/IP. Udělali byste to pomocí 127.0.0.1 místo localhost když se připojíte. Unixový socket by však mohl být rychlejší a bezpečnější.
  2. Zásuvku můžete změnit v php.ini :otevřete konfigurační soubor MySQL my.cnf zjistit, kde MySQL vytváří socket, a nastavit PHP mysqli.default_socket na tu cestu. V mém systému je to /var/run/mysqld/mysqld.sock .
  3. Nakonfigurujte socket přímo v PHP skriptu při otevírání spojení. Například:

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


  1. 10 tipů pro Microsoft Access pro vytváření vybraných dotazů

  2. PG::UndefinedTable:ERROR:vztah neexistuje se správným pojmenováním a konvencí Rails

  3. Jak nainstalovat SSMS

  4. Oprava „ERROR 1222 (21000):Použité příkazy SELECT mají jiný počet sloupců“ při použití UNION v MariaDB