Não é possível conectar ao servidor MySQL local através do soquete '/tmp/mysql.sock' (2)

143

Instalei o servidor MySQL e tentei me conectar a ele, mas obtendo o erro:

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

Eu verifiquei meu diretório / tmp e não há mysql.sock. Não consigo encontrar o mysql.sock em lugar nenhum. Eu li que pode estar em

    /var/lib/mysql/mysql.sock

Mas eu verifiquei lá também e não há diretório mysql, apenas alguma coisa de postfix dentro de / lib. Alguém poderia me ajudar com esse problema?

user3344382
fonte
2
Estou trabalhando no Mac OS X
user3344382 16/14
Olá, você pode colar o comando que está usando para se conectar? Você também iniciou o MySQL?
Mark Butler
@MarkButler Estou usando este comando: / usr / local / mysql / bin / mysql
user3344382 16/16
certo, é apenas o servidor não estava funcionando. No entanto, ainda não consigo entender onde está o mysql.sock, pode haver outros lugares ocultos em que possa residir?
user3344382
Este erro é muito geral e pode ser por vários motivos. Para um resumo puro, consulte aqui: medium.com/@7anac/…
Janac Meena

Respostas:

272

Tente iniciar o servidor MySQL:

mysql.server start

Casey Robinson
fonte
44
ERRO! O servidor sair sem atualizar PID arquivo
bastianwegge
1
@wegginho Possível solução para sua mensagem de erro se você instalou o MySQL via homebrew Erro PID no servidor mysql start
Casey Robinson
esqueci de iniciar serviços mysql!
GeekHades
1
@bastianwegge tente verificar o arquivo de erro em /usr/local/var/mysql/USERNAME.local.err no meu caso eu tive que apagar /tmp/mysql.sock reinicie usandomysql.server start
Josh Bradley
61

Eu tive a mesma pergunta depois de atualizar o OS X Yosemite, bem, a solução é bastante simples, verifique a preferência do sistema -> mysql, o status era STOP. Basta reiniciá-lo e ele funciona bem no meu mac agora.

Keren
fonte
1
Graças a tonelada @keren tão simples, perdi 45 minutos em alterar as configurações no meu arquivo my.cnf quando esse tempo todo era o único problema.
kandroidj
Trabalhou para mim também, graças, não estava tendo idéia em termos de instalação DMG.
Rameshwar Vyevhare 26/02
Esta, infelizmente, não me ajudou
simhumileco
Simples e impressionante!
Desmond DAI
6
Hum o que? Por que as Preferências do Sistema da OSX têm uma opção MySQL?
AlxVallejo
45

Para MAMP

ln -s /Applications/MAMP/tmp/mysql/mysql.sock /tmp/mysql.sock

De https://coderwall.com/p/w5kwzw/solved-can-t-connect-to-local-mysql-server-through-socket-tmp-mysql-sock

ATUALIZAÇÃO: Toda vez que meu computador reiniciar, tenho que inserir esse comando, então criei um atalho.

Faça o seguinte no tipo de terminal:

~: vi ~/.profile

Adicionar

alias ...='source ~/.profile'
alias sockit='sudo ln -s /Applications/MAMP/tmp/mysql/mysql.sock /tmp/mysql.sock'

Salve .

No tipo de terminal:

~: ... para originar a configuração .profile.

Agora no terminal você pode apenas digitar

~: sockit
Bryan
fonte
1
Impressionante. Apenas a correção que eu estava procurando.
precisa saber é o seguinte
1
Voltei a este post várias vezes e sempre funciona.
Trey Copeland
Atualizei para o mysql 5.7.1 fora do MAMP e corri para o erro. Este fixa-lo para mim
David
Se você está em um livro mac e você vê MAMP isso funciona
kelrob-dev
32

O comando a seguir resolveu meu problema:

sudo chown -R _mysql:mysql /usr/local/var/mysql

sudo mysql.server start
Nikesh Suwal
fonte
1
Depois de procurar por 3 horas, isso resolveu meu problema. Acabei de instalar o mysql através do homebrew com brew install mysqlmas nenhum dos comandos que o homebrew me disse para executar funcionou corretamente. Isso fez com que todos os problemas desaparecessem ... Obrigado !! O que exatamente é a primeira linha que você escreveu? O que isso significa?
Mes2013 mesqueeb #
Obrigado, funciona bem!
Nirojan Selvanathan
1
Hey para mim foi: sudo chown -R _mysql: mysql / usr / local / mysql / data
Junaid Bhura
chown -R mudar o -R proprietário recursivamente
Hos Mercury
Um 10.13.1 e homebrew originais deram esse erro ao instalar o mariadb (10.2.10). Essa alteração do proprietário foi corrigida, então agora sudo brew services start mariadbtambém funciona para iniciar o mariadb na inicialização (não apenas no login). YAY! Obrigado!
Iggie
16

Depois de tentar todas as soluções, funcionou apenas para mim depois de especificar o host

mysql -u root -p -h127.0.0.1

ao pedir senha

Enter password:

pressione Enter

e funcionará, se tudo estiver ok como acima.

Hos Mercury
fonte
2
Eu configurei o mysql com um contêiner de docker usando o Docker para Mac e mapeio sua porta 3306 para o Mac. Sem adicionar o -h 127.0.0.1, ele sempre alerta Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2); depois de adicionar o argumento, ele funciona bem.
Evi Song
1
Isso ocorre porque passar pelo 127.0.0.1 não usa o soquete, eu acho. Mais de uma solução alternativa estreita.
Lucas Morgan
1
Correr mysql -u root -h127.0.0.1 sem a -pbandeira funcionou para mim, pois quando instalei o MySQL, nunca executei o mysql_secure_installationcomando. Meu entendimento é que, neste caso, a instalação é padronizada como nenhuma senha necessária.
22419 Richie Thomas
1
Trabalhou como um encanto!
Panduka DeSilva 18/11/19
10

Depois de lutar por horas, a única coisa que funcionou foi

sudo mysql.server start

Em seguida, faça uma instalação segura com

mysql_secure_installation 

Em seguida, conecte-se ao db via

mysql -uroot -p

O Mysql é instalado via homebrew e a versão é

Server version: 5.7.21 Homebrew

A especificação da versão pode ser útil, pois a solução pode ser diferente com base na versão.

Krishnadas PC
fonte
9

No seu arquivo de configuração mysql, que está presente nas /etc/my.cnfalterações abaixo, reinicie o mysqldprocesso do dameon

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

Também verifique este tópico relacionado

Não é possível conectar ao servidor MySQL local através do soquete '/tmp/mysql.sock

Rahul
fonte
não há arquivo my.cnf no diretório / etc. Acho que posso criar esse arquivo manualmente, mas como eu disse, não há diretório mysql em / var / lib, como o soquete pode estar lá?
user3344382
Verifique o tópico relacionado que eu publiquei e verifique se o servidor mysql está realmente executando ou não.
Rahul
Eu encontrei o arquivo em/etc/mysql/my.cnf
Devon
se você instalou com cerveja que você precisa para uso /tmp/mysql.sockcomo local de meias
Mark Shust em M.academy
8

A seguir, resolvi meu problema:

Verifique onde o servidor MySQL está ouvindo: netstat -nlp Se estiver ouvindo TCP, use 127.0.0.1 enquanto estiver conectando ao DB em vez de "localhost"

Verifique o documento do MySQL aqui

Umesh
fonte
isso parece funcionar para mim e prova que o mysql está ativo, mas por que não consigo conectar ao soquete local?
Colin D
8

Tente isso, funcionou para mim.

sudo /usr/local/mysql/support-files/mysql.server start

vasanth vasu
fonte
Por que esse caminho? enquanto usa o comando "where is mysql" (MAC OS), fornecendo a saída /usr/local/mysql/bin/.Como identificar esse caminho no Mac?
Vineeth Bhaskaran
Ya, O caminho muda consequentemente
vasu Vasanth
4

Se você estiver usando o XAMPP no Mac OS X e tiver instalado o MySQL com o Homebrew, poderá ter esse problema. Na janela do gerenciador do XAMPP, vá para Manage Servers e selecione MySQL, clique em configure e abra o arquivo de configuração, você tem o caminho do arquivo de soquete, coloque o caminho na sua configuração de host do MySQL e deve funcionar.

É algo como isto:

...
[client]
#password   = your_password
port        = 3306
socket      = /Applications/XAMPP/xamppfiles/var/mysql/mysql.sock
...

então, por exemplo no Django:

...    
DATABASES = {
        "default": {
            "ENGINE": "django.db.backends.mysql",
            "NAME": "database_name",
            "USER": "user",
            "PASSWORD": "password",
            "HOST": "/Applications/XAMPP/xamppfiles/var/mysql/mysql.sock",
            "PORT": "",
        }
    }
...

Espero que isto ajude.

Cairo
fonte
3

Primeiro, saber onde estava o diretório de dados para mim era a chave. /usr/local/var/mysql Aqui, havia pelo menos um arquivo com a extensão .err precedido pelo nome da minha máquina local. Tinha todas as informações que eu precisava para diagnosticar.

Acho que estraguei tudo instalando o mysql 8 primeiro. Meu aplicativo não é compatível com ele, então tive que fazer o downgrade de volta para 5,7

Minha solução que funcionou para mim foi acessar /usr/local/etc/my.cnf

Encontre esta linha, se estiver lá. Eu acho que o mysql 8 está relacionado:

mysqlx-bind-address = 127.0.0.1 

Remova-o porque no mysql 5.7 diz que não gosta no log de erros

Adicione também essa linha se ela não estiver no endereço de ligação.

socket=/tmp/mysql.sock

Vou ao /tmp diretório e exclua todos os arquivos mysql.sock lá. No início do servidor, ele recriará os arquivos de meias

Lixeira o diretório de dados com o mySQL no estado parado. O meu era /usr/local/var/mysql. Este é o mesmo local em que os logs estão

De lá eu corri

>mysqld --initialize

Então tudo começou a funcionar ... este comando fornecerá uma senha aleatória no final. Salve essa senha para a próxima etapa

Executando isso para atribuir minha própria senha.

>mysql_secure_installation 

Ambos

>brew services stop mysql@5.7

e

>mysql.server start

agora estão trabalhando. Espero que isto ajude. São cerca de 3 horas de tentativa e erro.

adrian
fonte
3

Primeiro digite:

brew services start mysql

Então isso -:

mysql -uroot
Rudra shah
fonte
0

Passei muito tempo fazendo isso, quero colocar meu aplicativo django no meu servidor e quando executo python manage.py migrate , atendi a estas perguntas

E!! Eu configurei isso ln -s /var/run/mysqld/mysqld.sock /tmp/mysql.sock Funcionou finalmente!

LittleCabbage
fonte
0

Digite o terminal da seguinte maneira:

mysql.server start
Frank Cheng
fonte
0

Parar e iniciar o servidor mysql do terminal resolveu meu problema. Abaixo estão os cmds para parar e iniciar o servidor mysql nos MacOs.

sudo /usr/local/mysql/support-files/mysql.server stop
sudo /usr/local/mysql/support-files/mysql.server start

Nota: Reiniciar os serviços da preferência do sistema Mac não resolveu o problema no meu mac. Portanto, tente reiniciar do terminal.

Lakshmi Narayanan
fonte
0

Se você estiver executando no macOS, é mais fácil verificar primeiro, vá para 'Preferências do Sistema' e veja se o MySQL está em execução ou não.

Micah Lotemo
fonte
-1

Para o CentOS, o arquivo para init mysql está localizado aqui:

/etc/init.d/mysqld start
etusm
fonte