Estou recebendo o seguinte erro ao tentar conectar-me ao mysql:
Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
Existe uma solução para este erro? Qual pode ser a razão por trás disso?
Estou recebendo o seguinte erro ao tentar conectar-me ao mysql:
Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
Existe uma solução para este erro? Qual pode ser a razão por trás disso?
Respostas:
Você está se conectando ao "localhost" ou ao "127.0.0.1"? Notei 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ê pode tentar usar "127.0.0.1" se o conector do soquete não estiver ativado / funcionando.
/etc/hosts
arquivo no meu contêiner de janela de encaixe me mostrou o nome do host do MySql mysql
. O uso desse mesmo nome de host na minha configuração de conexão resolveu o problema.
Certifique-se de que seu serviço mysql esteja em execução
service mysqld start
Em seguida, tente o seguinte:
(se você não definiu a senha para o mysql)
mysql -u root
se você já definiu a senha
mysql -u root -p
service mariadb start
porque mariadb.org/debian-9-released-mariadb-mysql-variant
Se o seu arquivo my.cnf (geralmente na pasta etc) estiver corretamente configurado com
socket=/var/lib/mysql/mysql.sock
você pode verificar se o mysql está sendo executado 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 esse não é o local do seu arquivo de soquete (verifique my.cnf).
Provavelmente mysql.sock
não existe em /var/lib/mysql/
.
Se você encontrar o mesmo arquivo em outro local, vincule-o novamente:
Por exemplo: eu tenho isso em /data/mysql_datadir/mysql.sock
Alterne o usuário para o mysql e execute como mencionado abaixo:
su mysql
ln -s /data/mysql_datadir/mysql.sock /var/lib/mysql/mysql.sock
Isso resolveu meu problema
mysql.sock
arquivo
Se você está em um RHEL recente, pode ser necessário iniciar o mariadb (um código aberto do mysql db) em vez do mysql db:
yum remove mysql
yum -y install mariadb-server mariadb
service mariadb start
Você poderá acessar o mysql da maneira usual:
mysql -u root -p
mariadb-server
e mariadb
, não se esqueça de executar mysql_secure_installation
para limpar algumas configurações inseguras padrão.
No meu caso, mudei o arquivo de soquete para outro local dentro /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. O diagnóstico em execução mostrará o caminho correto do soquete. por exemplops 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 esse problema adicionando a mesma linha de soquete na [client]
seção dentro da configuração do mysql.
Basta editar /etc/my.cnf
Adicione as seguintes linhas paramy.cnf
[mysqld]
socket=/var/lib/mysql/mysql.sock
[client]
socket=/var/lib/mysql/mysql.sock
Reinicie o mysql e conecte-se novamente
mysql -u usuário -p banco de dados de senhas -h host;
Verifique se o serviço mysqld está em execução ou não, se não estiver, inicie o serviço.
Se o seu problema não for resolvido, procure /etc/my.cnf
e modifique da seguinte maneira, onde você vê uma linha começando com 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
MariaDB, um fork do MySQL desenvolvido pela comunidade, 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
Hoje em dia, no Fedora, o pacote é chamado mariadb
E no Ubuntu, é chamadomariadb-server
.
Portanto, talvez você precise instalá-lo se ainda não estiver instalado no seu sistema.
Verifique se você tem espaço suficiente /var
. Se o demon mysql não conseguir escrever informações adicionais na unidade, o servidor mysql não iniciará e isso levará ao erroCan'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 baixo o uso do disco.
innodb_buffer_pool_size
em my.cnf
. Defini-lo para um valor pequeno, como innodb_buffer_pool_size = 50M
é um bom teste para descartar esta hipótese;)
Aqui está o que funcionou para mim:
ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
service mysqld restart
Por favor, verifique se outro serviço mysql está em execução.
Certifique-se de ter iniciado o servidor:
mysql.server start
Em seguida, conecte-se ao usuário root:
mysql -uroot
Se o seu mysql estava funcionando anteriormente e parou subitamente, basta "reiniciar" 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 !!
se você alterar arquivos em / var / lib / mysql [como copiar ou substituir isso], deverá configurar o proprietário dos arquivos como mysql, isso é tão importante se a reinicialização do mariadb.service falhar
chown -R mysql: mysql / var / lib / mysql / *
chmod -R 700 / var / lib / mysql / *
Primeiro digite "service mysqld start" e faça o login
Por favor, verifique se você instalou o servidor MySQL corretamente, eu encontrei esse erro várias vezes e acho difícil depurar do soquete, quero dizer que pode ser mais fácil reinstalá-lo.
Se você estiver usando o CentOS 7, eis 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 yum install mysql-community-server
Inicie com systemctl: systemctl start mysqld
Meu problema foi que instalei o mysql com sucesso e funcionou bem.
Mas um dia, o mesmo erro ocorreu.
Não é possível conectar ao servidor MySQL local através do soquete '/var/lib/mysql/mysql.sock' (2)
E nenhum arquivo mysql.sock existia.
Esta solução resolveu meu problema e o mysql voltou a funcionar:
Faça 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 agora deve estar instalado e funcionando.
Espero que isso possa ajudar outra pessoa também.
Note que enquanto o mysql lê as informações da localização do arquivo de soquete no arquivo my.cnf, o programa mysql_secure_installation parece não fazer isso corretamente às vezes.
Portanto, se você é como eu e embaralha as coisas no momento da instalação, pode entrar na situação em que pode se conectar ao banco de dados com o mysql, mas a coisa não pode ser protegida (sem usar esse script).
Para corrigir isso, a sugestão do sreddy funciona bem: faça um link suave de onde o script esperaria o soquete para onde ele realmente está. Exemplo:
ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock
(Eu uso / tmp / como local padrão para soquetes)
Uma maneira de reproduzir esse erro: Se você pretendia se conectar a um servidor externo, mas se conectar ao local inexistente:
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 como este:
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 banco de dados ainda esteja hospedado no localhost. Por exemplo, se um administrador de rede escolher (ou mudar para) a hospedagem do Amazon DB, você precisará desse nome de host!
No meu caso, estava importando um novo banco de dados e não consegui me conectar novamente depois disso. Finalmente, percebi que era um problema de espaço.
Para que você possa excluir o último banco de dados e expandir seu disco rígido ou o que eu fiz, restaurei um instantâneo da minha máquina virtual.
Apenas no caso de alguém achar útil
Este é um problema se você estiver ficando sem espaço em disco. A solução é liberar espaço no disco rígido.
Leia mais para ter a explicação:
Se você estiver executando o MySQL no LINUX, verifique o espaço livre do HDD com o disco de comando livre:
df
se você estiver 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 este é o problema e agora você tem a solução!
Como o mysql.sock deseja ser criado na pasta mysql, que quase sempre está na pasta raiz, não foi possível devido à falta de espaço.
Se você fornecer periodicamente o comando ls no diretório mysql (no openSUSE 11.1 está em / var / lib / mysql), você terá 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 frequência (você deve tentar colocar o ls para acessar uma instância com o arquivo mysql.sock na pasta).
Isso é causado pelo espaço em disco insuficiente.
Espero ajudar algumas pessoas !!!! Obrigado!
Experimente as primeiras 2, 3 soluções. O erro é ainda pop-up & 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 não úteis
rm /var/cache/*
Provavelmente, seu problema será resolvido agora.
Se você estiver no shell do sf.net , tente:
mysql --host=mysql-{LETTER} --user={LETTER}{GROUP ID}admin -p
Altere {LETTER} e {GROUP ID} conforme mostrado no banco de dados MySQL do perfil de administrador do projeto.