Não é possível conectar-se ao servidor MySQL local por meio do soquete ‘/var/lib/mysql/mysql.sock’ (2)

Eu estou recebendo o seguinte erro quando tento conectar ao mysql:

Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

Existe uma solução para esse erro? Qual pode ser a razão por trás disso?

Você está se conectando a “localhost” ou “127.0.0.1”? Percebi que quando você se conecta ao “localhost”, o conector do soquete é usado, mas quando você se conecta ao “127.0.0.1”, o conector TCP / IP é usado. Você poderia tentar usar “127.0.0.1” se o conector do soquete não estiver habilitado / funcionando.

Assegure-se de que seu serviço mysql esteja rodando

 service mysqld start 

Em seguida, tente um dos seguintes procedimentos:

(se você não tiver definido a senha para o mysql)

 mysql -u root 

se você já definiu senha

 mysql -u root -p 

Se o seu arquivo my.cnf (geralmente na pasta etc) está configurado corretamente

 socket=/var/lib/mysql/mysql.sock 

você pode verificar se o mysql está rodando com o seguinte comando:

 mysqladmin -u root -p status 

tente mudar sua permissão para a pasta mysql. Se você estiver trabalhando localmente, poderá tentar:

 sudo chmod -R 777 /var/lib/mysql/ 

que resolveu para mim

O servidor MySQL não está em execução ou não é o local do arquivo de soquete (verifique my.cnf).

O mais provável é que o mysql.sock não exista em /var/lib/mysql/ .

Se você encontrar o mesmo arquivo em outro local, então faça uma binding simbólica:

Por ex: eu tenho em /data/mysql_datadir/mysql.sock

Mude o usuário para mysql e execute conforme mencionado abaixo:

 su mysql ln -s /data/mysql_datadir/mysql.sock /var/lib/mysql/mysql.sock 

Isso resolveu meu problema

No meu caso eu mudei o arquivo socket para outro local dentro de /etc/my.cnf de /var/lib/mysql/mysql.sock para /tmp/mysql.sock

Mesmo depois de reiniciar o serviço mysqld, ainda vejo a mensagem de erro quando tento conectar. ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

O problema está na maneira como o cliente está configurado. A execução de diagnósticos mostrará realmente o caminho correto do soquete. por exemplo, ps aux | grep mysqld ps aux | grep mysqld

Trabalho:

 mysql -uroot -p -h127.0.0.1 mysql -uroot -p --socket=/tmp/mysql.sock 

Não funciona:

 mysql -uroot -p mysql -uroot -p -hlocalhost 

Você pode corrigir este problema adicionando a mesma linha de socket na seção [client] dentro da configuração do mysql.

Se você está em um RHEL recente, pode ser necessário iniciar o mariadb (um database mysql open source) em vez do database mysql:

 yum remove mysql yum -y install mariadb-server mariadb service mariadb start 

Você deve então poder acessar o mysql da maneira usual:

 mysql -u root -p 

Verifique se o seu serviço mysqld está rodando ou não, se não rodar, inicie o serviço.

Se o seu problema não for resolvido, procure /etc/my.cnf e modifique como a seguir, onde você verá uma linha começando com o socket . Faça um backup desse arquivo antes de fazer esta atualização.

 socket=/var/lib/mysql/mysql.sock 

Mudar para

 socket=/opt/lampp/var/mysql/mysql.sock -u root 

Basta editar /etc/my.cnf Adicione as seguintes linhas ao my.cnf

 [mysqld] socket=/var/lib/mysql/mysql.sock [client] socket=/var/lib/mysql/mysql.sock 

Reinicie o mysql e conecte-se novamente

mysql -u usuario -p senha database -h host;

Verifique se você tem espaço suficiente em /var . Se o mysql demon não for capaz de gravar informações adicionais na unidade, o servidor mysql não iniciará e isso levará ao erro. Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

Considere usar

 expire_logs_days = 10 max_binlog_size = 100M 

Isso ajudará você a manter o uso do disco baixo.

Veja o que funcionou para mim:

 ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock service mysqld restart 

MariaDB, uma comunidade desenvolvida do MySQL, tornou-se a implementação padrão do MySQL em muitas distribuições.

Então, primeiro você deve começar,

 $ sudo systemctl start mariadb 

Se isso falhar, tente,

 $ sudo systemctl start mysqld 

Então, para iniciar o mysql,

 $ mysql -u root -p 

A partir de hoje, no Fedora o pacote é chamado mariadb E no Ubuntu é chamado mariadb-server .

Então você pode ter que instalá-lo se não estiver instalado no seu sistema.

Por favor, verifique se outro serviço mysql está sendo executado.

Certifique-se de ter iniciado o servidor:

 mysql.server start 

Em seguida, conecte-se com o usuário root:

 mysql -uroot 

experimentar

 echo 0 > /selinux/enforce 

Se você alterar os arquivos em / var / lib / mysql [como copiar ou replace isso], você deve configurar o proprietário dos arquivos para o mysql, isto é tão importante se o restart do mariadb.service falhar

chown -R mysql: mysql / var / lib / mysql / *

chmod -R 700 / var / lib / mysql / *

Se o seu mysql estava trabalhando anteriormente e parou de repente, basta “reinicializar” o servidor.

Estava enfrentando esse problema no meu CentOS VPS .->

Estava constantemente recebendo

Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'(2)

Tentei todas as técnicas, finalmente, reiniciar o servidor corrigiu os problemas ->

shutdown -r now

Espero que isto ajude !!

Primeiro digite “service mysqld start” e faça o login

Por favor, certifique-se de ter instalado o servidor MySQL corretamente, eu encontrei este erro muitas vezes e acho que é complicado depurar a partir do soquete, quero dizer, pode ser mais fácil reinstalá-lo.

Se você estiver usando o CentOS 7, aqui está a maneira correta de instalá-lo:

Primeiro de tudo, adicione a fonte da comunidade mysql
yum install http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm

Então você pode instalá-lo por yum install mysql-community-server

Comece com systemctl: systemctl start mysqld

Meu problema era que eu instalei o mysql com sucesso e funcionou bem.

Mas um dia, o mesmo erro ocorreu.

Não é possível conectar-se ao servidor MySQL local por meio do soquete ‘/var/lib/mysql/mysql.sock’ (2)

E nenhum arquivo mysql.sock existia.

Essa solução resolveu meu problema e o mysql estava funcionando novamente:

Faça o login como root:

 sudo su - 

Corre:

 systemctl stop mysqld.service systemctl start mysqld.service systemctl enable mysqld.service 

Teste como root:

 mysql -u root -p 

O mysql deve estar funcionando agora.

Espero que isso possa ajudar outra pessoa também.

Note que enquanto o mysql lê a informação da localização do socketfile do arquivo my.cnf, o programa mysql_secure_installation parece não fazer isso corretamente às vezes.

Então, se você é como eu e embaralha as coisas no momento da instalação, você pode entrar na situação em que você pode se conectar ao database com o mysql, mas a coisa não pode ser segura (não usar esse script).

Para corrigir isso, a sugestão de sreddy funciona bem: faça um link de onde o script esperaria que o socket ficasse onde estava. Exemplo:

 ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock 

(Eu uso / tmp / como um local padrão para sockets)

Uma maneira de reproduzir esse erro: Se você quisesse se conectar a um servidor externo, mas se conectasse ao local não existente:

 eric@dev ~ $ mysql -u dev -p Enter password: ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) eric@dev ~ $ 

Então você tem que especificar o host assim:

 eric@dev ~ $ mysql --host=yourdb.yourserver.com -u dev -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 235 Server version: 5.6.19 MySQL Community Server (GPL) Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> show databases; +-------------------------+ | Database | +-------------------------+ | information_schema | | mysql | | performance_schema | +-------------------------+ 3 rows in set (0.00 sec) mysql> exit Bye eric@dev ~ $ 

Isso pode ser uma sugestão estúpida, mas certifique-se de que seu database ainda está hospedado no host local. Por exemplo, se um administrador de rede escolher (ou mudar para) a hospedagem do Amazon DB, você precisará desse nome de host!

correu para este problema ao tentar conectar o mysql no cliente SSH, encontrado adicionando o caminho do soquete para o comando útil quando alternar entre sockets é necessário.

 > mysql -u user -p --socket=/path/to/mysql5143.sock 

Funcionou para mim com as seguintes mudanças

Qualquer caminho para socket é mencionado em [mysqld] e mesmo em [client] em my.cnf e reiniciar mysql

[mysqld] socket = / var / lib / mysql / mysql.sock

[cliente] socket = / var / lib / mysql / mysql.sock

Este é um problema se você está ficando sem espaço em disco. Solução é libertar algum espaço do disco rígido.

Por favor, leia mais para ter a explicação:

Se você estiver executando o MySQL no LINUX, verifique o espaço livre do disco rígido com o comando disk free:

  df 

se você está recebendo algo assim:

 Filesystem 1K-blocks Used Available Use% Mounted on /dev/sda2 5162828 4902260 0 100% / udev 156676 84 156592 1% /dev /dev/sda3 3107124 70844 2878444 3% /home 

Então esse é o problema e agora você tem a solução!

Desde mysql.sock quer ser criado na pasta mysql que é quase sempre sob a pasta raiz não poderia alcançá-lo por falta de espaço.

Se você estiver dando periodicamente o comando ls sob o diretório mysql (no openSUSE 11.1 está em / var / lib / mysql) você irá receber algo como:

 hostname:/var/lib/mysql # .protected IT files ibdata1 mysqld.log systemtemp .tmp NEWS greekDB mysql mysqld.pid test ARXEIO TEMP1 ib_logfile0 mysql.sock polis DATING deisi ib_logfile1 mysql_upgrade_info restore 

O arquivo mysql.sock aparece e desaparece com freqüência (você deve tentar colocar com o ls para acertar uma instância com o arquivo mysql.sock na pasta).

Isso é causado por falta de espaço em disco.

Espero que eu ajude algumas pessoas !!!! Obrigado!

Eu tive que desativar explicit_defaults_for_timestamp de my.cnf.

Tente primeiro 2, 3 soluções. Erro é stil popup & Se você não consegue encontrar /var/lib/mysql/mysql.sock

 find /var/ -name mysql.sock 

Verifique o espaço disponível em / var /

 df 

Se o diretório estiver cheio, remova alguns arquivos / diretórios inúteis

 rm /var/cache/* 

Provavelmente seu problema será classificado agora.

Se você está no shell do sf.net , tente:

 mysql --host=mysql-{LETTER} --user={LETTER}{GROUP ID}admin -p 

Altere {CARTA} e {ID DO GRUPO} como mostrado no seu database MySQL do perfil de administração do projeto.

Apenas chova no mesmo problema – e aqui está como eu resolvi isso.

Assumindo que o mysqld está rodando, então o problema pode ser apenas o cliente mysql não saber onde procurar pelo arquivo socket.

A maneira mais direta de resolver isso consiste em adicionar a seguinte linha ao arquivo .my.cnf do perfil do usuário (no linux que geralmente está em / home / myusername):

 socket= 

Se você não tiver um arquivo .my.cnf, crie um contendo o seguinte:

 [mysql] socket= 

No meu caso, desde que eu mudei a pasta de dados padrão do mysql (/ var / lib / mysql) em um local diferente (/ data / mysql), adicionei ao .my.cnf o seguinte:

 [mysql] socket=/data/mysql/mysql.sock 

Espero que isto ajude.