RESOLVIDO: Não é possível conectar ao servidor mySQL local por meio de soquete /tmp/mysql.sock

Então, você está inicializando um novo ambiente local pela primeira vez ou talvez tenha feito alguma forma de atualização do sistema e tenha perdido suas configurações. Você não usa OSX nativo e prefere usar uma pilha MAMP. Você também se acostumou a usar a linha de comando para tudo – até mesmo para a maioria das consultas ao banco de dados. Você tem o MAMP inicializado e o mySQL em execução, mas tenta se conectar ao mySQL

mysql -u root -ppassword

BAM.

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

Uh o quê? Por que você está tentando usar o mySQL que não veio com meu MAMP? Bem, descobrimos que existem duas maneiras de lidar com isso. Fiz a solução menos elegante primeiro, antes de encontrar a solução de causa raiz mais recentemente.

O cliente mySQL, por padrão, tenta se conectar por meio de um arquivo local denominado soquete em vez de se conectar ao endereço de loopback (127.0.0.1) para localhost. A localização padrão deste arquivo de soquete, pelo menos no OSX, é /tmp/mysql.sock.

SOLUÇÃO RÁPIDA E MENOS ELEGANTE
Crie um link simbólico para enganar o sistema operacional para que encontre o soquete correto.

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

Você precisará reinicializar seu mySQL antes que isso tenha efeito.

SOLUÇÃO ADEQUADA
Você pode fazer uma mudança no arquivo de configuração MySQL nativo (/etc/my.cnf) que irá definir permanentemente o arquivo de socket usado pelo cliente MAMP mySQL.

Este artigo de Quinn McHenry mostra as poucas linhas de código para fazer isso, embora eu o avise que o destino para os usuários do MAMP deve ser algo como:

/Applications/MAMP/tmp/mysql/mysql.sock

e isso será definido explicitamente no arquivo startMysql.sh em / Applications / MAMP / bin.

Esperançosamente, isso ajuda a evitar que alguém tenha uma manhã difícil.