O Mysql não inicia o mysqld.sock está faltando

7

Depois que eu reiniciei o meu servidor, tudo começou normalmente, exceto por "mysql", eu tentei iniciá-lo manualmente " /etc/init.d/mysql restart " ou com " service mysql restart ", ele falha

No arquivo de log, ele diz:

Jul 16 08:13:38 localhost /etc/init.d/mysql[18136]: error: 'Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)'
Jul 16 08:13:38 localhost /etc/init.d/mysql[18136]: Check that mysqld is running and that the socket: '/var/run/mysqld/mysqld.sock' exists!

Eu verifiquei esse caminho, mas não encontrei esse arquivo de soquete, por favor avise?

    
por MohammedSimba 16.07.2015 / 11:09

3 respostas

3

Eu tentei iniciar o mysql em "Safe Mode" para criar o arquivo sock e o arquivo pid, mas ele falha por algum erro "bind",

  1. Alterei o endereço IP no parâmetro "bind ip" em my.cnf para localhost
  2. iniciou o mysql no modo de segurança.
  3. reiniciou o mysql no modo normal, e tudo correu bem.
por 19.07.2015 / 22:21
3

Para encontrar todos os arquivos de soquete no seu sistema, execute:

sudo find / -type s

Meu sistema de servidor Mysql tinha o soquete aberto em /var/lib/mysql/mysql.sock

Quando você encontrar o local onde o soquete está sendo aberto, adicione ou edite a linha no arquivo /etc/my.cnf com o caminho para o arquivo de soquete:

socket=/var/lib/mysql/mysql.sock

Às vezes, o script de inicialização do sistema que executou o executável da linha de comando especifica um sinalizador --socket=path . Esse sinalizador poderia substituir o my.cnf location e isso resultaria em um soquete não encontrado onde o arquivo my.cnf indica que deveria ser. Então, quando você tentar executar o cliente de linha de comando mysql, ele lerá my.cnf para localizar o soquete, mas ele não o encontrará, já que ele se desvia de onde o servidor criou um. Então, a menos que você se importe onde o soquete reside, basta alterar o my.cnf para corresponder.

Se você é super usuário no sistema Linux, com base no acima, faça o seguinte:

kill -9 <pid_of_mysql>

ou às vezes você pode fazer isso:

pkill -9 mysqld

Depois de fazer isso, você pode querer procurar um arquivo pid em /var/run/mysqld/ e excluí-lo

Certifique-se de que as permissões no seu socket sejam tais que qualquer usuário que esteja executando o mysqld possa ler / escrever para ele. Um teste fácil é abri-lo para ler / escrever e ver se ainda funciona:

chmod 777 '/var/run/mysqld/mysqld.sock'

Se isso resolver o problema, você poderá adaptar as permissões e a propriedade do soquete conforme necessário com base nas configurações de segurança.

Além disso, o diretório em que o socket reside deve ser acessado pelo usuário executando o processo mysqld.

Referência: link

    
por 16.07.2015 / 11:52
1

sim, como dito acima localize seu arquivo socket primeiro #find / -type s , se você encontrou um arquivo mysqld.sock no diretório / var / run / mysqld /, verifique se alguma instância do mysqld está em execução ou não #netstat -anpt | grep 3306 or #ps aux | grep mysqld se você encontrou qualquer processo em execução pare (#kill -9 pid) e remova o arquivo de soquete. Em seguida, tente reiniciá-lo e se o mysql não criar o arquivo de soquete, tente iniciá-lo como

#/usr/sbin/mysqld --defaults-file=/etc/mysql/my.cnf --basedir=/usr --datadir=/var/lib/mysql --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/run/mysqld/mysqld.sock

Verifique também o seu arquivo my.cnf (/etc/mysql/my.cnf) e comente o campo bind-address, e se você encontrar algum campo skip-network, comente-o.

    
por 18.09.2015 / 09:06

Tags