/ etc / mysql as permissões não permitem que o superusuário não se conecte ao soquete

4

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.

    
por Aaron Craig 15.05.2014 / 18:25

2 respostas

2

Dependendo da sua configuração exata abaixo, isso pode ser suficiente para corrigir seu problema de conexão.

você pode iniciar o mysql com --socket = / tmp / mysql.sock

do Manual do Mysql

--socket=path, -S path

For connections to localhost, the Unix socket file to use, or, on Windows, the name of the named pipe to use.

Por 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

veja Arquivos de opções para detalhes

No seu caso você deve adicionar socket = / tmp / mysql.sock a este arquivo.

    
por 16.05.2014 / 15:30
1

Acabei de ver uma instalação bem nova do Ubuntu 14.04 e as permissões padrão do / etc / mysql são 755. Para ser honesto, não entendo por que você acha que isso é um problema.

    
por 17.05.2014 / 11:14

Tags