Recentemente, mudei meu mysql datadir
para /var/lib/mysql
um novo diretório /home/mysql
montado em um novo disco rígido.
Para simplificar, pensei que seria bom colocar o tmpdir
e socket
neste novo disco rígido.
Tudo funciona conforme planejado, até que movi o arquivo de soquete. Mover o arquivo de soquete impede que o phpMyAdmin faça login; Posso fazer login sem problemas na linha de comando e usando minha estrutura da web, mas não com o phpMyAdmin.
A única diferença entre uma configuração de trabalho e não está no meu my.cnf
arquivo..
Trabalhando:
[mysqld]
socket = /var/lib/mysql/mysql.sock
...
[client]
socket = /var/lib/mysql/mysql.sock
Não:
[mysqld]
socket = /home/mysql/mysql.sock
...
[client]
socket = /home/mysql/mysql.sock
Supondo que seja um erro de permissão, verifiquei os caminhos de cada local:
drwxr-xr-x. root root var
drwxr-xr-x. root root lib
drwxr-xr-x mysql mysql mysql
srwxrwxrwx mysql mysql mysql.sock
drwxr-xr-x. root root home
drwxr-xr-x mysql mysql mysql
srwxrwxrwx mysql mysql mysql.sock
então eu estou supondo que eles estão bem. Eu assumi errado?
Eu phpMyAdmin configurado para usar 'localhost'
Eu tenho a bind-address
opção mysql definida para nosso IP de rede local para o servidor (192.168.etc.)
Também reiniciei os servidores httpd
e mysqld
ao testar uma nova configuração.
Estou muito feliz em deixar o arquivo de soquete onde está, supondo que não seja um problema de segurança/desempenho, mas adoraria saber o que está acontecendo se alguém puder ajudar a esclarecer!
A menos que você use o local padrão integrado, o PHP também precisa ser explicitamente configurado com o local do arquivo de soquete do MySQL no arquivo php.ini ou na string de conexão...
pdo_mysql.default_socket
= /home/mysql/mysql.sock
ou dependendo da sua escolha de API
mysqli.default_socket
= /home/mysql/mysql.sock
Como ibennetch sugeriu em seu comentário acima, definir o caminho do soquete para o novo local funciona. No meu caso, a configuração padrão para o tipo de conexão era 'tcp' . Isso também precisa ser alterado para 'socket' .
Assim, as duas linhas que precisam ser alteradas no arquivo config.in.php são:
Não forje para reiniciar o httpd: