Webserver: o chrooted PHP dá erro mysql.sock ao tentar acessar o mysql

6

Olá pessoal, configurei um servidor web Ubuntu com Nginx + PHP5-FPM. Eu criei um ambiente chrooted (usando o jailkit) em que estou lançando meus desenvolvedores, de onde eles podem desenvolver seus aplicativos de teste.

Chroot jail: / home / cadeia

O Nginx e o PHP5-FPM são executados fora do chroot, mas são configurados para funcionar com sites dentro do ambiente chrooted.

Até agora, o Nginx e o PHP5-FPM estão disponibilizando arquivos sem problemas, exceto pelo seguinte: Ao tentar se conectar ao MySQL, recebemos este erro: SQLSTATE [HY000] [2002] Não é possível conectar-se ao servidor MySQL local por meio do soquete '/var/run/mysqld/mysqld.sock'

Agora, acredito que o problema se deve ao fato de o php.ini não-chroot fazer referência ao mysqld.sock fora do ambiente chroot (atualmente está usando a configuração padrão do MySQL atualmente).

Minha pergunta é, como posso configurar o PHP para acessar o MySQL via loopback ou similar? (Encontrei isso como uma sugestão em um resultado do google, mas sem instruções)

Ou se estiver faltando algum outro cenário óbvio, me avise. Se houver uma opção de criar um hardlink (que permaneceria disponível mesmo se o mysql for reiniciado), isso também seria útil.

    
por Jon L. 31.01.2011 / 23:55

4 respostas

8

Eu resolvi meu próprio problema. O Jailkit não pôde criar uma referência de link físico para o mysqld.sock, já que o Ubuntu armazena o / var / run no tmpfs, que parece ao sistema ser uma partição separada (que quebra a funcionalidade do hardlink). Eu agora estou montando o / var / run / mysqld na cadeia agora, assim: mount --bind /var/run/mysqld /home/jail/var/run/mysqld/

    
por 01.02.2011 / 17:23
4

Que tal usar como host value 127.0.0.1 ? Ele usa conexão TCP que não escreve socket (ao contrário de localhost value no unix).

    
por 18.09.2013 / 23:05
1

A remontagem usando --bind para o chroot parece uma sugestão viável. No entanto, a conexão IMHO com o MySQL usando um soquete TCP (127.0.0.1) parece mais limpa, mais segura e menos propensa a dar errado.

O motivo pelo qual eu digo é que várias fontes, incluindo link e link sugira adicionar ao fstab:

 /var/run/mysqld /home/jail/var/run/mysqld bind defaults,bind 0 0

Seja cauteloso com isso: o Debian, pelo menos, limpa / var / run na reinicialização, então a montagem falhará no momento da inicialização, e assim será o seu serviço. Claro que você poderia usar:

 /var/run /home/jail/var/run bind defaults,bind 0 0
    
por 11.02.2015 / 22:04
0

Você pode controlar o soquete do MySQL através da opção de socket no seu arquivo my.cnf.

socket = /home/jail/var/run/mysqld/mysqld.sock
    
por 01.02.2011 / 00:06