sql >> Base de Datos >  >> RDS >> Mysql

mysqli::mysqli():(HY000/2002):No se puede conectar al servidor MySQL local a través del socket 'MySQL' (2)

Cuando usa solo "localhost", la biblioteca del cliente MySQL intenta usar un socket de dominio Unix para la conexión en lugar de una conexión TCP/IP. El error te dice que el socket, llamado MySQL , no se puede utilizar para realizar la conexión, probablemente porque no existe (error número 2).

De la Documentación de MySQL :

En Unix, los programas MySQL tratan el nombre de host localhost de manera especial, en la medida en que probablemente sea diferente de lo que espera en comparación con otros programas basados ​​en la red. Para las conexiones a localhost, los programas MySQL intentan conectarse al servidor local usando un archivo de socket Unix. Esto ocurre incluso si se da una opción --port o -P para especificar un número de puerto. Para asegurarse de que el cliente establezca una conexión TCP/IP con el servidor local, use --host o -h para especificar un valor de nombre de host de 127.0.0.1, o la dirección IP o el nombre del servidor local. También puede especificar el protocolo de conexión de forma explícita, incluso para host local, mediante la opción --protocol=TCP.

Hay algunas formas de resolver este problema.

  1. Puede usar TCP/IP en lugar del socket Unix. Harías esto usando 127.0.0.1 en lugar de localhost cuando te conectas Sin embargo, el socket Unix podría ser más rápido y seguro de usar.
  2. Puede cambiar el socket en php.ini :abra el archivo de configuración de MySQL my.cnf para encontrar dónde MySQL crea el socket y establecer el mysqli.default_socket de PHP a ese camino. En mi sistema es /var/run/mysqld/mysqld.sock .
  3. Configure el socket directamente en el script PHP al abrir la conexión. Por ejemplo:

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