Recentemente, tentei instalar o MySQL com homebrew ( brew install mysql
) e quando tento executá-lo recebo o seguinte erro:
ERROR 2002 (HY000): Não é possível conectar ao servidor MySQL local através do soquete '/tmp/mysql.sock' (2)
Não há /tmp/mysql.sock
nem a /var/lib/mysql.sock
.
Eu procurei e não encontrei nenhum mysql.sock
arquivo.
Como posso consertar isso?
mysqld
verificar as coisas e garantir que o MySQL foi encerrado corretamente da última vez. Se ele teve um desligamento 'sujo' (por exemplo, se a bateria de um laptop força o desligamento do sistema), isso deve limpá-lo. Depois, você pode iniciar o servidor MySQL novamente:mysql.server start
.Respostas:
Quando você colocou o servidor em execução via
você deve ver o soquete em /tmp/mysql.sock . No entanto, o sistema parece esperar por isso em /var/mysql/mysql.sock . Para corrigir isso, você deve criar um link simbólico em / var / mysql :
Isso resolveu para mim. Agora meu phpMyAdmin funciona bem com localhost e 127.0.0.1 .
O crédito vai para Henry
fonte
mysql.server start
eu consigoERROR! The server quit without updating PID file (/usr/local/var/mysql/lyahdav-C02R32HCG8WM.pid)
. Eu precisava de uma versão mais antiga do MySQL, instalada viabrew install [email protected]
.mysql.server start
consertou para mimParece que seu servidor mysql não foi iniciado. Normalmente, executo o comando de parada e inicio novamente:
Mesmo erro, e isso funciona para mim.
fonte
mysqld &
resposta a um comentário acima, mas acho que provavelmente faria a mesma coisa, poismysqld stop
tenho certeza de que no meu caso foi por causa de um desligamento impróprio.Eu tinha alguns diretórios restantes de outra instalação do mysql (8.0), que não foram removidos.
Resolvi isso fazendo o seguinte:
Primeiro desinstale o mysql
Exclua as pastas / arquivos que não foram removidos
Reinstale o mysql e vincule-o
Habilite e inicie o serviço
fonte
Tente conectar usando "127.0.0.1" em vez de "localhost".
fonte
1) Se você conseguir ver "mysql parado" ao executar o comando abaixo;
2) e se você for capaz de iniciar o mysql com o comando abaixo;
isso significa; mysql pode ser iniciado manualmente, mas não é iniciado automaticamente quando o sistema operacional é iniciado. Adicionar mysql aos serviços corrigirá este problema. Para fazer isso, você pode executar o comando abaixo;
Depois disso, você pode reiniciar seu sistema operacional e tentar se conectar ao mysql para ver se ele foi iniciado automaticamente. Fiz o mesmo e parei de receber o erro abaixo;
Eu espero que isso ajude.
fonte
O arquivo
/tmp/mysql.sock
provavelmente é um Pipe Nomeado, pois está em uma pasta temporária. Um pipe nomeado é um arquivo especial que nunca é armazenado permanentemente.Se fizermos dois programas, e quisermos que um programa envie uma mensagem para outro programa, poderíamos criar um arquivo de texto. Temos um programa que escreve algo no arquivo de texto e o outro programa lê o que nosso outro programa escreveu. Isso é o que um pipe é, exceto que ele não grava o arquivo no disco rígido do nosso computador, o IE não armazena o arquivo permanentemente (como fazemos quando criamos um arquivo e o salvamos).
Um Socket é exatamente o mesmo que um Pipe. A diferença é que os Sockets geralmente são usados em uma rede - entre computadores. Um Socket envia informações para outro computador ou recebe informações de outro computador. Ambos Pipes e Sockets usam um arquivo temporário para compartilhar de forma que eles possam 'se comunicar'.
É difícil discernir qual o MySql está usando neste caso. Mas não importa.
O comando
mysql.server start
deve fazer com que o 'servidor' (programa) execute seu loop infinito que criará aquele arquivo especial e aguardará por alterações (listen
por gravações).Depois disso, um problema comum pode ser que o programa MySql não tenha permissão para criar um arquivo em sua máquina, então você pode ter que dar a ele privilégios de root
fonte
mysql.server start
,mysql.server stop
e em seguida, começou o serviço via homebrew novamente combrew services start [email protected]
e as coisas correram bem.Depois de instalar o macos mojave, tive que limpar a pasta mysql
/usr/local/var/mysql
e então reinstalar via,brew install mysql
caso contrário, coisas relacionadas à permissão apareceriam em todo o lugar.fonte
/usr/local/var/mysql
você também removerá todos os seus bancos de dados existentes!Recebi o mesmo erro e isso é o que me ajudou:
fonte
Apenas para acrescentar a essas respostas, no meu caso, eu não tinha um servidor mySQL local, ele estava sendo executado dentro de um contêiner docker. Portanto, o arquivo socket não existe e não estará acessível para o cliente "mysql".
O arquivo sock é criado pelo mysqld e o mysql usa isso para se comunicar com ele. No entanto, se o servidor mySql não estiver executando localmente, ele não exigirá o arquivo sock.
Ao especificar um nome de host / ip, o arquivo sock não é necessário, por exemplo
fonte
Como passei bastante tempo tentando resolver isso e sempre voltei a esta página ao procurar esse erro, deixarei minha solução aqui esperando que alguém economize o tempo que perdi. Embora no meu caso eu esteja usando o mariadb em vez do MySql, você ainda pode adaptar esta solução às suas necessidades.
Meu problema
é o mesmo, mas minha configuração é um pouco diferente (mariadb em vez de mysql):
Mariadb instalado com homebrew
Iniciou o daemon
Tentei conectar e recebi o erro mencionado acima
Minha solução
descobrir quais
my.cnf
arquivos são usados pormysql
(como sugerido neste comentário ):verifique onde o arquivo de soquete Unix está sendo executado (quase como descrito aqui ):
(você pode querer em
grep mysql
vez de mariadb)Adicione o arquivo de soquete que você encontrou
~/.my.cnf
(crie o arquivo se necessário) (presumindo que~/.my.cnf
foi listado ao executar omysql --verbose ...
comando acima):Reinicie o seu mariadb:
Depois disso, pude executar o mysql e obter:
Então, eu executo o comando com privilégios de superusuário em vez disso e depois de inserir minha senha, obtive:
Notas:
Não tenho certeza sobre os grupos onde você deve adicionar o soquete, primeiro eu tinha [cliente-servidor], mas depois percebi que [cliente] deveria ser o suficiente. Então eu mudei e ainda funciona.
Ao correr
mariadb_config | grep socket
eu obtenho: o--socket [/tmp/mysql.sock]
que é um pouco confuso, pois parece que/usr/local/mariadb/data/mariadb.sock
é o lugar real (pelo menos na minha máquina)Gostaria de saber onde posso configurar o
/usr/local/mariadb/data/mariadb.sock
para realmente estar/tmp/mysql.sock
para que possa usar as configurações padrão em vez de ter que editar o meu.my.cnf
(mas estou muito cansado agora para descobrir isso ...)Em algum momento, também fiz coisas mencionadas em outras respostas antes de chegar a isso.
fonte
Você precisará executar
mysql_install_db
- a maneira mais fácil é se você estiver no diretório de instalação:Como alternativa, você pode alimentar
mysql_install_db
umbasedir
parâmetro como o seguinte:fonte
Eu enfrentei o mesmo problema no meu mac e resolvi, seguindo os seguintes tutoriais
https://mariadb.com/resources/blog/installing-mariadb-10116-mac-os-x-homebrew
Mas não se esqueça de matar ou desinstalar a versão antiga antes de continuar.
Comandos:
fonte
Depois de reiniciar não consegui me conectar com o mariadb local, uma pesquisa também me trouxe a esta página e eu queria compartilhar minha solução com você.
Percebi que falta o diretório my.cnf.d em / usr / local / etc /.
Este é um bug conhecido com homebrew que é descrito e resolvido lá. https://github.com/Homebrew/homebrew-core/issues/36801
maneira rápida de corrigir: mkdir /usr/local/etc/my.cnf.d
fonte
brew update
reiniciar.brew services list
o resultado mostrava o status de mariadbstarted
em amarelo. Obrigado pela dica.Ao executar mysql_secure_installation e inserir a nova senha, obtive:
Percebi ao tentar o seguinte com esta resposta :
Ele não retornou nada, e achei que isso significava que não havia um arquivo .sock.
Portanto, adicionei o seguinte ao meu arquivo my.cnf (em /etc/my.cnf ou, no meu caso, /usr/local/etc/my.cnf ).
Debaixo:
Debaixo:
Isso foi baseado nesta postagem .
Então pare / inicie o mysql novamente e tente novamente mysql_secure_installation que finalmente me permite inserir minha nova senha de root e continuar com outras preferências de configuração.
Espero que isso ajude alguém. Cara, eu odeio essas coisas ...
fonte
apenas para completar este tópico. portanto, MAMP (PRO) é usado com bastante frequência
o caminho aqui é
fonte
Eu iniciei manualmente o mysql no painel de preferências do sistema inicializando o banco de dados e depois iniciando-o. Isso resolveu meu problema.
fonte
No meu caso, o culpado foi encontrado nos arquivos de log:
Então mudei o nome
ib_logfile0
para me livrar do erro (tive que fazer o mesmoib_logfile1
depois).fonte
Eu tive o mesmo problema. Depois de tentar todos esses métodos sem sucesso, fiz o seguinte:
em outro console:
Eu vi o seguinte erro:
Então mudei a
tc.log
extensão paratc.log.txt
e reiniciei mariadbE feito!
fonte
Isso funciona para mim:
obrigado
fonte
Para mim, instalei
mariadb
há muito tempo, depois instalei[email protected]
.Ao executar
mysql -uroot
, recebo o erro:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
Lendo as respostas:
mariadb
/usr/local/var/mysql
mysqld --initialize
Então eu fui capaz de
mysql -uroot -p
fonte
rm -rf / usr / local / var / mysql / ib_logfile *
fonte