Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

mysqli::mysqli():(HY000/2002):Não é possível conectar ao servidor MySQL local através do soquete 'MySQL' (2)


Quando você usa apenas "localhost", a biblioteca cliente MySQL tenta usar um soquete de domínio Unix para a conexão em vez de uma conexão TCP/IP. O erro está informando que o soquete, chamado MySQL , não pode ser usado para fazer a conexão, provavelmente porque não existe (erro número 2).

Da Documentação do MySQL :

No Unix, os programas MySQL tratam o nome do host localhost especialmente, de modo que provavelmente é diferente do que você espera em comparação com outros programas baseados em rede. Para conexões com localhost, os programas MySQL tentam se conectar ao servidor local usando um arquivo de soquete Unix. Isso ocorre mesmo se uma opção --port ou -P for fornecida para especificar um número de porta. Para garantir que o cliente faça uma conexão TCP/IP com o servidor local, use --host ou -h para especificar um valor de nome de host de 127.0.0.1 ou o endereço IP ou nome do servidor local. Você também pode especificar o protocolo de conexão explicitamente, mesmo para localhost, usando a opção --protocol=TCP.

Existem algumas maneiras de resolver esse problema.
  1. Você pode usar apenas TCP/IP em vez do soquete Unix. Você faria isso usando 127.0.0.1 em vez de localhost quando você se conecta. O soquete Unix pode ser mais rápido e seguro de usar, no entanto.
  2. Você pode alterar o soquete em php.ini :abra o arquivo de configuração do MySQL my.cnf para descobrir onde o MySQL cria o soquete e definir o mysqli.default_socket do PHP para aquele caminho. No meu sistema é /var/run/mysqld/mysqld.sock .

  3. Configure o socket diretamente no script PHP ao abrir a conexão. Por exemplo:
    $db = new MySQLi('localhost', 'kamil', '***', '', 0, 
                                  '/var/run/mysqld/mysqld.sock')