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