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
Aqui no meu servidor, o arquivo mysqld.sock não existe. O que fazer?
Abre o arquivo de configuração do mysql my.cnf e procura por mysqld.sock.
Dessa forma você achará o caminho, então é só criar o link.
O arquivo my.cnf pode variar a localização de distribuição para distribuição.
Os mais comuns são:
Na dúvida executa
locate my.cnf
Muito bom mesmo, resolvi o problema.
Bom dia! Como dou permissao de leitura neste arquivo?
O meu esta assim >
[mysqld]
#
# * Basic Settings
#
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
lc-messages-dir = /usr/share/mysql
Obrigado!
Pode usar este tutorial http://viniciusmuniz.com/permissoes-no-linux/
Não Resolveu, o arquivo mysqld.sock não existe
Verifique a configuração do mysql em /etc/mysql/ existe o parâmetro para configurar o caminho do arquivo sock.