Resolvendo problema de socket no mysql

O problema

Por Diversas vezes isso já ocorreu comigo, sempre na instalação de um novo servidor, ou maquina pessoal. Instalo o mysql, e na hora de conectar:

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

A solução

Simples e fácil, procure o arquivo de configuração, my.cnf, tenha certeza que ele é o arquivo de configuração mesmo.

Faça um backup dele, para evitar qualquer problema. O meu como uso ubuntu está em /etc/mysql/my.cnf

cd /etc/mysql/; cp my.cnf my.cnf.bkp

Edite o arquivo você provalvemente obterá as seguintes linhas:

[mysqld]
#
# * Basic Settings
#
socket          = /var/run/mysqld/mysqld.sock
port            = 3306
basedir         = /usr

Verifique se o usuário que está tendo o erro, tem permissão de leitura do /var/run/mysqld/mysqld.sock

Se não possuir, dê a devida permissão.

MySQL + PHP

Caso você esteja tentando se conectar com o php. E está recebendo o erro, pode ser que no seu php.ini esteja fixo um socket.

Para resolver basta abrir o php.ini

nano /etc/php5/cgi/php.ini

Este caminho pode variar de acordo com o php você esteja utilizando, no meu caso eu uso lighttpd com php-cgi, e este é o caminho padrão.

Para quem não conhecia está forma de utilizar o php, ou não conhecia o lighttpd, pode dar uma olha aqui:Habilitando PHP no lighttpd sem dificuldades. Habilite, e veja como o fastcgi pode ser muito mais rápido.

Após abrir o arquivo, procure por mysql.default_socket coloque o caminho correto, ou deixe em branco.

Qual a utilidade?

A diferença de velocidade entre a conexão é bem grande, se você passar o caminho direto do socket se conectará bem mais rápido, principalmente se esse socket estiver em tmpfs.

Pra quem não conhece o que é o tmpfs, pode saber mais neste link:Melhorando a performance do linux

Referências

mysql – http://www.mysql.com/
php – http://www.php.net/
php – stackoverflow

Written by vinicius