
Estamos executando o servidor Ubuntu 13.10 no Vagrant e nos deparamos com um problema interessante.
Estamos substituindo a localização 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é agora tudo bem. Iniciando o servidor, há de fato um soquete escutando em /tmp.
Porém, apenas o superusuário pode acessá-lo!
Como não superusuário, 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.
Presumimos que o problema era que nosso usuário não privilegiado não consegue acessar os arquivos conf para encontrar o soquete correto e, de fato, alterar as permissões em /etc/mysql para 0755 corrige esse problema, mas não parece que a correção certa.
Como observação lateral, em 12.04 esse comportamento é o mesmo, mas é mascarado pelo fato de que quando o mysql inicia, ele cria o soquete em /tmp, mas também cria um link simbólico em /var/run/mysqld, então quando o cliente tenta para conectar, ele encontra o soquete padrão.
Em ambas as máquinas, o mysql é a versão 5.5.37.
Responder1
Dependendo da sua configuração exata, abaixo pode ser suficiente para corrigir o problema de conexão.
você pode iniciar o mysql com --socket=/tmp/mysql.sock
--socket=path, -S path
Para conexões com localhost, o arquivo de soquete Unix a ser usado ou, no Windows, o nome do pipe nomeado a ser usado.
Para ter essa configuração armazenada sem permitir que o usuário leia toda a configuração do mysql, você pode alterar as configurações do arquivo ~/.my.cnf
verArquivos de opçõespara detalhes
No seu caso, você adicionaria socket=/tmp/mysql.sock a este arquivo.
Responder2
Acabei de ver uma instalação bastante recente do Ubuntu 14.04 e as permissões padrão em/etc/mysql são 755. Para ser honesto, não entendo por que você acha que isso é um problema.