Permissões /etc/mysql não permitem que não superusuários se conectem ao soquete

Permissões /etc/mysql não permitem que não superusuários se conectem ao soquete

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

deManual Mysql

--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.

informação relacionada