Mysql
 sql >> Database >  >> RDS >> Mysql

mysqli::mysqli():(HY000/2002):impossibile connettersi al server MySQL locale tramite il socket 'MySQL' (2)

Quando si utilizza solo "localhost", la libreria client MySQL tenta di utilizzare un socket di dominio Unix per la connessione anziché una connessione TCP/IP. L'errore ti dice che il socket, chiamato MySQL , non può essere utilizzato per effettuare la connessione, probabilmente perché non esiste (errore numero 2).

Dalla Documentazione MySQL :

Su Unix, i programmi MySQL trattano il nome host localhost in modo speciale, in quanto è probabilmente diverso da quello che ti aspetti rispetto ad altri programmi basati sulla rete. Per le connessioni a localhost, i programmi MySQL tentano di connettersi al server locale utilizzando un file socket Unix. Ciò si verifica anche se viene fornita un'opzione --port o -P per specificare un numero di porta. Per garantire che il client effettui una connessione TCP/IP al server locale, utilizzare --host o -h per specificare un valore del nome host di 127.0.0.1 o l'indirizzo IP o il nome del server locale. Puoi anche specificare esplicitamente il protocollo di connessione, anche per localhost, usando l'opzione --protocol=TCP.

Ci sono alcuni modi per risolvere questo problema.

  1. Puoi semplicemente usare TCP/IP invece del socket Unix. Puoi farlo usando 127.0.0.1 invece di localhost quando ti connetti. Tuttavia, il socket Unix potrebbe essere più veloce e più sicuro da usare.
  2. Puoi cambiare il socket in php.ini :apri il file di configurazione MySQL my.cnf per trovare dove MySQL crea il socket e impostare mysqli.default_socket di PHP a quel sentiero. Sul mio sistema è /var/run/mysqld/mysqld.sock .
  3. Configura il socket direttamente nello script PHP all'apertura della connessione. Ad esempio:

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