Estamos executando o servidor Ubuntu 13.10 no Vagrant e nos deparamos com um problema interessante.
Estamos substituindo o local do soquete em conf.d / my.cnf
[client]
port = 3306
socket = /tmp/mysql.sock
[mysqld_safe]
socket = /tmp/mysql.sock
[mysqld]
user = mysql
pid-file = /var/run/mysqld/mysql.pid
socket = /tmp/mysql.sock
port = 3306
datadir = /var/lib/mysql
bind-address = 0.0.0.0
Até aí tudo bem. Inicializando o servidor, existe de fato um soquete escutando em / tmp.
No entanto, apenas o superusuário pode acessá-lo!
Como um não superusuário, o mysql -u root -pXXXX recebe o seguinte erro:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'
O cliente tenta se conectar no soquete errado.
Assumimos que o problema é que nosso usuário não privilegiado não pode acessar os arquivos conf para encontrar o socket correto, e de fato, mudar as permissões em / etc / mysql para 0755 corrige este problema, mas não faz isso. Não parece a solução certa.
Como nota, em 12.04 esse comportamento é o mesmo, mas é mascarado pelo fato de que quando o mysql inicia, ele cria o socket em / tmp, mas também cria um link simbólico sob / var / run / mysqld, então quando o cliente tenta se conectar, ele encontra o soquete padrão.
Em ambas as máquinas, o mysql é a versão 5.5.37.