Eu tenho o mysql 5.5 no meu servidor ubuntu 12.04. Este comando:
mysql -u root -p
funciona perfeitamente, mas isso me dá erro:
mysqldump -u root -p mydb_name > a.sql
mysqldump: Got error: 2002: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) when trying to connect
No arquivo my.cnf, o soquete é definido como:
socket = /home/mysql/mysql.sock
então não tenho ideia de onde /var/run/mysqld/mysqld.sock está vindo. Obrigado.
Ao ler o arquivo de configuração, o
mysql
cliente de linha de comando lê apenas as diretivas de configuração encontradas nas seções[client]
e[mysql]
, enquantomysqldump
usa apenas as diretivas de configuração encontradas nas seções[client]
e .[mysqldump]
Se sua diretiva de soquete no arquivo de configuração estiver na
[mysql]
seção, mas não na[mysqldump]
seção, você deve movê-la para a[client]
seção e isso deve resolver seu problema.Então
/var/run/mysqld/mysqld.sock
de onde vem? Lembro-me muito bem, certa vez, de bater repetidamente com a cabeça na parede por causa disso.Acontece que o Ubuntu compila seus componentes MySQL a partir da fonte e, quando eles fazem isso, eles os compilam para uso
/var/run/mysqld/mysqld.sock
, a menos que o arquivo de configuração especifique o contrário ou o soquete seja substituído na linha desocket
comando[client]
... seria uma explicação para esse comportamento.