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.
Nesse caso, você provavelmente deve verificar se o servidor MYSQL está realmente em execução.
Jan Thomä
3
Você também pode forçar usando um soquete com o parâmetro socket (-S com / usr / bin / mysql) e forçar TCP / IP, fornecendo uma porta (-P com / usr / bin / mysql.)
Kaoru
Usar um nome de rede totalmente qualificado que não seja localhost funcionou para mim. Apenas verifique se ele está declarado no arquivo 'hosts' do cliente.
Fabien Haddadi
2
Nota aos usuários do cygwin: se o cliente mysql do cygwin tentar conectar-se a um servidor mysql WAMP local, por exemplo, use -h <hostname diferente de localhost>. Não tente criar um arquivo mysql.sock e declare-o em qualquer arquivo my.cnf, ele não funcionará.
Fabien Haddadi
Um nome de host errado me deu exatamente o mesmo erro. Observar o /etc/hostsarquivo 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.
Stephane
188
Certifique-se de que seu serviço mysql esteja em execução
Essa foi a resposta para mim. Desde que estou usando o mariadb, a solução foi executar o seguinte: "sudo systemctl start mariadb". Tudo foi bem depois disso.
mohsen
Dê uma medalha à @Zahra
Ahmed C
28
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:
Ele funciona para mim também, mas é depois que eu atualizei para a versão mais recente e, em seguida, apareça esse problema, posso saber por que isso aconteceu?
Ben
sudo chmod -R 777 / var / lib / mysql / trabalhou para mim com um problema que tive no início de um mysql recipiente janela de encaixe
user3152459
23
O servidor MySQL não está em execução ou esse não é o local do seu arquivo de soquete (verifique my.cnf).
renomear mysql.sock para outra coisa, depois reiniciar o mysqld ("service mysqld restart") e renomear outra coisa de volta para mysql.sock funcionou para mim. Uma ligeira variação nesta resposta, então obrigado.
Análise difusa
Esta resposta pode ajudar a localizar o mysql.sockarquivo
Nobita 28/07
15
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
Para sua informação, isso também funciona para o CentOS 8.1. Após a instalação mariadb-servere mariadb, não se esqueça de executar mysql_secure_installationpara limpar algumas configurações inseguras padrão.
Dio Phung 20/04
13
No meu caso, mudei o arquivo de soquete para outro local dentro /etc/my.cnf
de /var/lib/mysql/mysql.sockpara/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.
A única resposta correta. Eu me pergunto por que não tem votos suficientes.
CentAu
11
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.cnfe 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.
Oi Sekar, eu digitei "find / -name my.cnf", e eu tenho dois locais. 1) /opt/lampp/etc/my.cnf 2) /etc/mysql/my.cnf. Então, qual usar .. Eu fiz a pergunta aqui .. stackoverflow.com/questions/32437796/…
Nana Partykar 7/15
7
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)
Obrigado, estou executando o mysql no oracle virtualbox e quando fiz um despejo do meu bd, fiquei sem espaço e não consegui iniciar o servidor mysql, quando excluí o arquivo de despejo, consegui reiniciar o servidor mysql.
21413 JayCee
1
Isso resolveu para mim. Eu tinha innodb_buffer_pool_size definido com um valor muito alto para ambientes de produção e isso causou uma falha no mysql na minha máquina virtual.
22714 Benjamin Brizzi
1
Eu tive esse problema ao usar phabricator e a solução foi mudar innodb_buffer_pool_sizeem my.cnf. Defini-lo para um valor pequeno, como innodb_buffer_pool_size = 50Mé um bom teste para descartar esta hipótese;)
Yercalamarino
Esse era o problema, checava tudo, menos o espaço em disco. Liberou espaço de / var, voltou!
Nadjib Mami
5
Aqui está o que funcionou para mim:
ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
service mysqld restart
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
O que você quer dizer? por favor leia o FAQ antes de pedir a pergunta aqui
Anormal
Esta pergunta foi respondida com sucesso há três anos. Essa resposta exata foi dada mais completamente no ano passado.
Cairnarvon
2
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
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:
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 endwith;or\g.
Your MySQL connection id is235
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 |+-------------------------+3rowsinset(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!
Estou usando o provedor de hospedagem 1and1 e recebi esse erro após o ssh para o host. A correção foi simplesmente fornecer o nome do host "mysql -u dbo70123521 -p --host db70313321.db.1and1.com db703133520"
rob
1
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.
correu esse problema ao tentar conectar o mysql no cliente SSH, e foi útil adicionar o caminho do soquete ao comando quando é necessário alternar entre soquetes.
> mysql -u user-p --socket=/path/to/mysql5143.sock
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 516282849022600100%/
udev 156676841565921%/dev
/dev/sda3 31071247084428784443%/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).
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.
fonte
/etc/hosts
arquivo no meu contêiner de janela de encaixe me mostrou o nome do host do MySqlmysql
. 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
Em seguida, tente o seguinte:
(se você não definiu a senha para o mysql)
se você já definiu a senha
fonte
service mariadb start
porque mariadb.org/debian-9-released-mariadb-mysql-variantSe o seu arquivo my.cnf (geralmente na pasta etc) estiver corretamente configurado com
você pode verificar se o mysql está sendo executado com o seguinte comando:
tente mudar sua permissão para a pasta mysql. Se você estiver trabalhando localmente, poderá tentar:
que resolveu para mim
fonte
O servidor MySQL não está em execução ou esse não é o local do seu arquivo de soquete (verifique my.cnf).
fonte
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:
Isso resolveu meu problema
fonte
mysql.sock
arquivoSe 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:
Você poderá acessar o mysql da maneira usual:
fonte
mariadb-server
emariadb
, não se esqueça de executarmysql_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 exemplo
ps aux | grep mysqld
Trabalho:
Não funciona:
Você pode corrigir esse problema adicionando a mesma linha de soquete na
[client]
seção dentro da configuração do mysql.fonte
Basta editar
/etc/my.cnf
Adicione as seguintes linhas paramy.cnf
Reinicie o mysql e conecte-se novamente
fonte
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 comsocket
. Faça um backup desse arquivo antes de fazer esta atualização.Mudar para
fonte
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,
Se isso falhar, tente,
Então, para iniciar o mysql,
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.
fonte
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
Isso ajudará você a manter baixo o uso do disco.
fonte
innodb_buffer_pool_size
emmy.cnf
. Defini-lo para um valor pequeno, comoinnodb_buffer_pool_size = 50M
é um bom teste para descartar esta hipótese;)Aqui está o que funcionou para mim:
fonte
Por favor, verifique se outro serviço mysql está em execução.
fonte
Certifique-se de ter iniciado o servidor:
Em seguida, conecte-se ao usuário root:
fonte
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 !!
fonte
experimentar
fonte
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
fonte
Primeiro digite "service mysqld start" e faça o login
fonte
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
fonte
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:
Corre:
Teste como root:
O mysql agora deve estar instalado e funcionando.
Espero que isso possa ajudar outra pessoa também.
fonte
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:
(Eu uso / tmp / como local padrão para soquetes)
fonte
Funcionou para mim com as seguintes alterações
Qualquer que seja o caminho para o socket mencionado no [mysqld] e o mesmo no [client] no my.cnf e reinicie o mysql
soquete [mysqld] = / var / lib / mysql / mysql.sock
soquete [cliente] = / var / lib / mysql / mysql.sock
fonte
Uma maneira de reproduzir esse erro: Se você pretendia se conectar a um servidor externo, mas se conectar ao local inexistente:
Então você tem que especificar o host como este:
fonte
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!
fonte
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
fonte
correu esse problema ao tentar conectar o mysql no cliente SSH, e foi útil adicionar o caminho do soquete ao comando quando é necessário alternar entre soquetes.
fonte
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:
se você estiver recebendo algo assim:
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:
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!
fonte
Eu tive que desativar
explicit_defaults_for_timestamp
do my.cnf.fonte
Experimente as primeiras 2, 3 soluções. O erro é ainda pop-up & Se você não consegue encontrar
/var/lib/mysql/mysql.sock
Verifique o espaço disponível em / var /
Se o diretório estiver cheio, remova alguns arquivos / diretórios não úteis
Provavelmente, seu problema será resolvido agora.
fonte
Se você estiver no shell do sf.net , tente:
Altere {LETTER} e {GROUP ID} conforme mostrado no banco de dados MySQL do perfil de administrador do projeto.
fonte