erro: 'Não é possível conectar ao servidor MySQL local através do soquete' /var/run/mysqld/mysqld.sock '(2)' - Faltam /var/run/mysqld/mysqld.sock


322

Meu problema começou com a impossibilidade de efetuar login como root na minha instalação do mysql. Eu estava tentando executar o mysql sem senhas ativadas ... mas sempre que eu executava o comando

# mysqld_safe --skip-grant-tables &

Eu nunca receberia o aviso de volta. Eu estava tentando seguir estas instruções para recuperar a senha .

A tela fica assim:

root@jj-SFF-PC:/usr/bin# mysqld_safe --skip-grant-tables
120816 11:40:53 mysqld_safe Logging to syslog.
120816 11:40:53 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql

e não recebo uma solicitação para começar a digitar os comandos SQL para redefinir a senha.

Quando eu mato pressionando CTRL+ C, recebo a seguinte mensagem:

error: 'Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)'

Check that mysqld is running and that the socket: '/var/run/mysqld/mysqld.sock' exists!

Se eu tentar novamente o comando e deixá-lo por tempo suficiente, recebo a seguinte série de mensagens:

root@jj-SFF-PC:/run/mysqld# 120816 13:15:02 mysqld_safe Logging to syslog.
120816 13:15:02 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
120816 13:16:42 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended

[1]+  Done                    mysqld_safe --skip-grant-tables
root@jj-SFF-PC:/run/mysqld#

Mas se eu tentar fazer login como root, faça o seguinte:

# mysql -u root

Eu recebi a seguinte mensagem de erro:

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

Eu verifiquei e o /var/run/mysqld/mysqld.sockarquivo não existe. A pasta faz, mas não o arquivo.

Além disso, eu não sei se isso ajuda ou não, mas eu corri find / -name mysqlde veio com:

/var/run/mysqld - folder
/usr/sbin/mysqld - file
/run/mysqld - folder

Eu sou novo no Linux e MySQL, então não sei se isso é normal ou não. Mas estou incluindo essas informações para o caso de ajudar.

Finalmente decidi desinstalar e reinstalar o mysql.

apt-get remove mysql-server
apt-get remove mysql-client
apt-get remove mysql-common
apt-get remove phpmyadmin

Depois de reinstalar todos os pacotes novamente na mesma ordem que acima, durante a instalação do phpmyadmin, recebi o mesmo erro:

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

Então, tentei novamente desinstalar / reinstalar. Desta vez, depois de desinstalar os pacotes, também renomeei manualmente todos os arquivos e diretórios mysql mysql.badem seus respectivos locais.

/var/lib/mysql 
/var/lib/mysql/mysql
/var/log/mysql
/usr/lib/perl5/DBD/mysql
/usr/lib/perl5/auto/DBD/mysql
/usr/lib/mysql
/usr/bin/mysql
/usr/share/mysql
/usr/share/dbconfig-common/internal/mysql
/etc/init.d/mysql
/etc/apparmor.d/abstractions/mysql
/etc/mysql

Então eu tentei reinstalar mysql-servere mysql-clientnovamente. Mas notei que não me solicita uma senha. Não deveria pedir uma senha de administrador?


Eu tenho o mesmo problema. Eu resolvi isso agora. stackoverflow.com/questions/18150858/…
robert


resolvido por apenas reiniciar o servidor, em seguida, reiniciar o serviço mysql
bowpunya

@ Anto Esta não é uma cópia. Este está /var/run/mysqld/mysqld.sockfaltando. O problema que você vinculou tem esse arquivo.
motorbaby

Nenhuma das respostas aqui ou em qualquer outro lugar que encontrei resolveu o meu problema. Como era um projeto novo, mudei para o PostgreSQL e ele simplesmente funciona! :-)
James Bradbury

Respostas:


195

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

Depois de descobrir onde o soquete está sendo aberto, adicione ou edite a linha no seu arquivo /etc/my.cnf com o caminho para o arquivo do soquete:

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

Às vezes, o script de inicialização do sistema que iniciou o executável da linha de comando especifica um sinalizador --socket=path. Esse sinalizador pode substituir o local my.cnf e isso resultaria em um soquete não sendo encontrado onde o arquivo my.cnf indica que deveria estar. Então, quando você tenta executar o cliente de linha de comando mysql, ele lerá my.cnf para encontrar o soquete, mas não o encontrará, pois se desvia de onde o servidor o criou. Portanto, a menos que você se importe com a localização do soquete, basta alterar o my.cnf para corresponder.

Então, pare o processo mysqld. Como você faz isso varia de acordo com o sistema.

Se você é superusuário no sistema linux, tente um dos seguintes procedimentos se não souber o método específico usado pela instalação do MySQL:

  • service mysqld stop
  • /etc/init.d/mysqld stop
  • mysqladmin -u root -p shutdown
  • Alguns sistemas não estão configurados para ter uma maneira elegante de parar o mysql (ou por algum motivo, o mysql não responde) e você pode forçar o encerramento do mysql com:
    • Um passo: pkill -9 mysqld
    • Dois passos (menos preferido):
      • Encontre o ID do processo do mysql com pgrep mysqloups aux | grep mysql | grep -v grep
      • Supondo que o ID do processo seja 4969finalizado comkill -9 4969

Depois de fazer isso, convém procurar um arquivo pid /var/run/mysqld/e excluí-lo

Certifique-se de que as permissões no seu soquete sejam tais que qualquer usuário que o mysqld esteja executando possa ler / gravar nele. Um teste fácil é abri-lo para leitura / gravação completa e ver se ainda funciona:

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

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

Além disso, o diretório em que o soquete reside deve ser acessível pelo usuário que está executando o processo mysqld.


15
Por favor, não recomendo usar kill -9; existem várias maneiras que devem ser tentadas antes que isso aconteça.
Ignacio Vazquez-Abrams

@ execute isso no arquivo raiz 'find. -name mysqld.sock '. Eu já vi o arquivo de soquete em outros lugares além de / var / run. Depois de encontrá-lo, pode ser necessário editar seu arquivo my.cnf para apontar para onde ele é encontrado.
Ray

@ray, tentei executar o comando original de uma maneira diferente (encontrei um post específico do ubuntu em outro site ..). Aqui estão os comandos que eu executei: "sudo service mysql stop" e "sudo mysqld --skip-grant-tables". Depois de executar o segundo comando, recebo o seguinte erro: "InnoDB: Não foi possível bloquear ./ibdata1, erro: 11". Eu não posso encontrar esse arquivo ./ibdata1 ... InnoDB: Verifique se você não tiver outro processo mysqld
ponto

2
@dot correr ps -aux | grep mysqlde ver se quaisquer outros processos mysql estão funcionando
Ray

@raio. estou arrancando meu cabelo, cara. Eu decidi afastar o mysql e tentar novamente ... observe meu post atualizado.
16163 ponto

251

Tente este comando,

sudo service mysql start

+1 my.cnf estava apontando para os diretórios corretos, através do serviço mysql tinha morrido
wruckie

Eu tentei a resposta aceita, mas não consegui encontrar o mysql.sock, isso funcionou para mim. Obrigado
Giovanne Afonso 23/02

1
Eu precisava usarsudo service mysqld start
Gavin Miller

10
sudo apt-get install mysql-serverse você não o tem já instalado :)
aimme

17
Se você acertar esse problema, execute o comando simples PRIMEIRO antes de testar os outros itens, leva apenas um segundo e, se o servidor simplesmente não estiver em execução e estiver bom depois de iniciá-lo, significa que não funcionou. iniciar automaticamente, que seria o problema real a ser resolvido.
Lizardx

137

Este erro ocorre devido a várias instalações do mysql. Execute o comando:

ps -A|grep mysql

Mate o processo usando:

sudo pkill mysql

e execute o comando:

ps -A|grep mysqld

Também mate este processo executando:

sudo pkill mysqld

Agora você está totalmente configurado, basta executar os seguintes comandos:

service mysql restart
mysql -u root -p

Tenha o mysql muito bem funcionando novamente


Ei pessoal, eu estava correndo por toda a web tentando consertar isso. Meu problema era que eu estava tentando configurar o docker. Eu queria que ele usasse o diretório de dados mysql que era usado anteriormente pelo mysql fora do docker ... esse comando ps foi o melhor!
Michael

3
Depois de executar toda a web por quase 4 horas ou mais, isso finalmente funcionou. Deve ser a resposta principal: +1:
Shivam Gaur

4
A tarefa do mysql.service falhou porque o processo de controle saiu com o código de erro. Veja "status do systemctl mysql.service" e "journalctl -xe" para detalhes.
John Joe

1
A tarefa do mysql.service falhou porque o processo de controle saiu com o código de erro. Veja "status do systemctl mysql.service" e "journalctl -xe" para detalhes.
Adib Aroui

Tnx, você economiza meu tempo.
Aleksandur Atanasov

41

A solução é muito mais fácil.

  1. Primeiro, você deve localizar (no Terminal com "sudo find / -type s") onde seu mysql.sockarquivo está localizado. No meu caso, foi em/opt/lampp/var/mysql/mysql.sock
  2. Inicie o Terminal e execute sudo Nautilus
    Isso inicia o gerenciador de arquivos com privilégios de superusuário
  3. No Nautilus, navegue até onde seu mysql.sockarquivo está localizado
  4. Clique com o botão direito do mouse no arquivo e selecione Criar link
  5. Renomeie o arquivo vinculado para, em mysqld.sockseguida, clique com o botão direito do mouse no arquivo e corte -o
  6. Vá para /var/rune crie uma pasta chamada mysqlde insira-a
  7. Agora clique com o botão direito do mouse e cole o arquivo de link
  8. Voila! Agora você terá um mysqld.sockarquivo em /var/run/mysqld/mysqld.sock:)

4
Como você localiza o seu arquivo mysql.sock? Tentei encontrar / -name 'mysql.sock', mas ele não retorna nada.
Matthew Bloqueio

2
@MatthewLock Primeiro, verifique se o mysql está em execução (por "ps aux | grep mysql"); caso contrário, nenhum mysql.sock aparecerá. Em segundo lugar, use "sudo find / -type s", o que lhe dá todos os soquetes em seu sistema para localizar mysql.sock
narengi

35
E se a saída de sudo find / -type snão contiver nenhum mysql.sock?
jeff

1
Funciona. Mas não tenho ideia de por que esses desenvolvedores nunca fazem esse trabalho nos últimos anos?
Yi Jiang

2
Se for difícil saber onde está o mysql.sock através de "find / -type s" - tente usar o comando "mysql_config --socket". Você pode instalá-lo com sudo apt-get install libmysqlclient-dev
alexche8

26

Basta iniciar o serviço MySQL após a instalação:

Para o Ubuntu:

sudo service mysql start;

Para CentOS ou RHEL:

sudo service mysqld start;

Verifique primeiro por isso sudo systemctl status mysql.servicee sudo systemctl start mysql.service. Isso funciona para mim
Byeongin Yoon 2/19

16

Há um erro no Ubuntu com o MySQL 5.6 e 5.7, que var/run/mysqld/desaparecia sempre que o serviço MySQL parava ou é reiniciado. Isso impede que o MySQL seja executado. Encontrei essa solução alternativa, que não é perfeita, mas pelo menos a executa depois de parar / reiniciar:

mkdir /var/run/mysqld/
chown mysqld /var/run/mysqld/

obrigado - corrigi-o para mim, tenho que refazer o diretório e redefinir a propriedade em todas as reinicializações do serviço mysql - não foi possível encontrar o erro relatado em nenhum lugar oficialmente ou eu teria postado o link aqui :)
djoe

1
Ainda não tentei isso, mas talvez isso o ajude: Crie um novo arquivo /etc/tmpfiles.d/mysql.conf: # systemd tmpfile settings for mysql # See tmpfiles.d(5) for details e depois de d /var/run/mysqld 0755 mysql mysql - reiniciar, o mysql deve iniciar normalmente. Isto é do bugs.launchpad.net/ubuntu/+source/mysql-5.6/+bug/1435823 , comentário 3. Se você teve esse problema com o MySQL 5.7, por favor, comente no Launchpad. Quanto mais usuários abordarem o problema, mais atenção receberá.
precisa

Trabalhou para mim ... tive que usar o MySQL como nome de usuário e não o mysqld embora
Evan Parsons

Adicionar linha ao /etc/tmpfiles.d/mysql.confcomentário de motorbaby corrigiu esse problema para mim. Em um sistema operacional Centos 7 e usando mysql Ver 15.1 Distrib 10.3.11-MariaDB,.
turrican_34

Isso corrigiu o problema para mim.
shikata

14

Ok, basta copiar e colar estes códigos: Isso deve ser feito no terminal, dentro de um servidor, quando o banco de dados mysql não estiver instalado corretamente e quando você receber este erro: 'Não é possível conectar ao servidor MySQL local pelo soquete' / var / run / mysqld / mysqld.sock '(2)'.

Pare o MySql

sudo /etc/init.d/mysqld stop

Reinicie ou inicie-o

sudo /etc/init.d/mysqld restart or sudo /etc/init.d/mysqld start

Faça um link como este e dê ao sistema

ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock

Execute uma instalação segura que orienta todo o processo que você precisa fazer para configurar o mysql

/usr/bin/mysql_secure_installation

Eu recebo o mesmo Can't connecterro quando tento executar o comando acima.
precisa saber é

Apenas algo que eu descobri para aqueles que executam o ubuntu. Se você iniciar o mysqld usando /etc/init.d/mysqld start, você encontrará esse problema de qualquer maneira. Use o serviço mysql start e tudo ficará bem. Irritante, mas eu descobri no final.
Adam Short

11

Eu enfrentei o mesmo erro e descobri que era devido à atualização de pacotes. Então, depois de reiniciar o sistema, resolvi o erro.

Acho que devido à atualização de bibliotecas / pacotes sql que ocorreu o erro, tente isso se estiver fazendo alguma atualização :)


1
Fiz isso após a reinstalação (ou atualização) e agora funciona. Não há mais mensagem de soquete. Obrigado!
Wraithie # 20/17

8

Há muitas razões para esse problema, mas às vezes apenas reinicia o servidor mysql, ele corrige o problema.

sudo service mysql restart

7

Usando o XAMPP no ubuntu:

  1. Crie uma pasta chamada mysqld dentro do diretório / var / run . Você pode fazer isso usando o comando sudo mkdir /var/run/mysqld.

  2. Crie um link simbólico para o arquivo mysql.sock criado pelo servidor XAMPP quando for iniciado. Você pode usar o comando sudo ln -s /opt/lampp/var/mysql/mysql.sock /var/run/mysqld/mysqld.sock.

Nota: O arquivo mysql.sock é criado quando o servidor é iniciado e removido quando o servidor é parado. Às vezes, o link que você criou pode parecer quebrado, mas deve funcionar desde que você tenha iniciado o servidor usando um sudo /opt/lampp/lampp startou outro significa.

  1. Inicie o servidor se ele ainda não estiver em execução e tente executar seu programa novamente.

Boa sorte! Espero que você se safe dessa vez.


@MohsinKhan vá para localhost / phpmyadmin e importe o banco de dados de lá
Robert Odoch

6

A resposta da etapa de carregamento do usuário funcionou para mim. Às vezes é necessário editar o arquivo em /etc/mysql/my.cnfadicionar linha ao cliente

[client]
password = your_mysql_root_password
port  = 3306
host  = 127.0.0.1
socket  = /var/lib/mysql/mysql.sock

Isso me dá:mysql: unknown variable 'Host=127.0.0.1'
Splaktar

@ Splaktar: há um erro de digitação. Hostprecisa ser minúscula hoste funcionará. Além disso, esta solução funcionou para mim.
Mohammad Faisal

Brilhante - isso está funcionando para mim e para o meu ambiente docker - eu só precisei ajustar o ip, que é, no meu caso, o docker mysql container ip 172.17.xx
InforMedic

6

* Erro: 'Não é possível conectar ao servidor MySQL local através do soquete' /var/run/mysqld/mysqld.sock '(2)'

soluções

finalmente desinstale e reinstale o mysql. **

  • sudo apt-get remove mysql-server
  • sudo apt-get remove mysql-client
  • sudo apt-get remove o mysql-common
  • sudo apt-get remove phpmyadmin

depois instale novamente

  • sudo apt-get install mysql-server-5.6

Após esta operação, 164 MB de espaço em disco adicional serão usados.

  • Você quer continuar? [Y / n] Y pressione YES para instalações completas

...... .......

  • Por fim, você receberá essas linhas ....

    Configurando libhtml-template-perl (2.95-1) ...

    Configurando o mysql-common-5.6 (5.6.16-1 ~ exp1) ... Processando gatilhos para libc-bin (2.19-0ubuntu6) Processando gatilhos para ureadahead (0.100.0-16) ...

  • E depois

    root @ ubuntu1404: ~ # mysql -u root -p (para cada senha que primeiro você usar)

  • Digite a senha:

  • Nota: A senha digitada deve ser igual à senha do tempo de instalação do mysql (como .root, system, admin, rahul etc ...)

    Então digite

  • USE rahul_db (nome do banco de dados);

Obrigado.**


Por favor, melhorar a qualidade resposta
Mo.

Isso funcionou para mim devido a várias versões do mysql instaladas. Também remova mysql-server-5.6/5.5, mysql-client-5.6/5.5. Obrigado!
Luuk Skeur

obtido E: Package 'mysql-server-5.6' has no installation candidate, ele não existe no Ubuntu 18.04
juliocesar

6

Verifique se o caminho do arquivo de soquete inacessível é o mesmo que '/var/run/mysqld/mysqld.sock'; caso contrário, altere o caminho como o seu. Pare o mysqld

$ sudo /etc/init.d/mysqld stop

Se o processo ainda estiver em execução;

$ sudo pkill -9 mysqld

Remova o diretório mysql onde o socket será criado. Para mim, não foi permitido remover, então eu tive que remover com força.

$ sudo mkdir -p /var/run/mysqld

Defina a propriedade para o diretório

$ sudo chown mysql:mysql /var/run/mysqld

Inicie o mysql

$ sudo /etc/init.d/mysql start

Tentando conectar o mysql

$ sudo mysql -u dbuser -p

Sim, é a mesma resposta que dei em 14/02/19 às 11:56 (veja abaixo)
Ingo

Você salva vidas.
Sahib Khan

5

Eu acho que seu servidor MySQL não foi iniciado. Portanto, inicie o servidor usando um dos seguintes comandos.

#services mysql start

ou

#/etc/init.d/mysql start

5

Solução temporária

Talvez alguém que esteja enfrentando esse problema. Estou usando o Mysql Workbench no Ubuntu 14 e recebi este erro.

mysqldump: Got error: 2002: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) when trying to connect

Encontre o seu arquivo de soquete executando sudo find / -type s, no meu caso, foi/run/mysqld/mysqld.sock

Então, acabei de criar um link para este arquivo no tmpdiretório

sudo ln -s /var/run/mysqld/mysqld.sock /tmp/mysql.sock

Como você pode ver, o local do arquivo está na /tmppasta, então ele será removido com certeza. Você pode alterar .socko local do arquivo. Veja @ user3002884 resposta.
Bilal

Eu sei, eu só estava completando a sua resposta para que outros usuários saber antes que a solução é apenas temporária, como a pasta
Alex Burdusel

Você salvou minha vida :)
Mashpy Rahman em 08/02

4

pode encontrar mysqld.sockem /var/run/mysqldse você já tiver instalado mysql-server porsudo apt-get install mysql-server


4

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

em /etc/my.cnfadicionar estas linhas:

[client]
socket=/var/lib/mysql/mysql.sock <= this path should be also same as is[mysqld]

E reinicie o serviço com: service mysql restart

isso funcionou para mim


4

Isso já foi mencionado algumas vezes, mas funcionou imediatamente para mim:

serviço mysql restart


Interessante como isso é diferente de usar apenas o simples, "mysql" comando
luminol

3

No meu caso, dois processos mysqld estavam em execução .. eliminaram os processos opcionais usando o pkill -9 mysqld


Eu precisava adicionar o 'sudo' para matar o processo.
noti

3

Se você possui muitos bancos de dados e tabelas em seu sistema e se innodb_file_per_tableconfigurou no my.cnf, o servidor mysql pode ter ficado sem objetos / arquivos abertos (ou melhor, com os descritores para esses objetos) Defina um novo número máximo com

open-files-limit = 2048

e reinicie o mysql. Essa abordagem pode ajudar quando o soquete não é criado, mas na verdade esse pode não ser o problema real, existe um problema subjacente.


2

Eu só tive esse problema no Ubuntu 14.10

Voltas que mysql-servernão estavam mais instaladas (de alguma forma foram removidas), mas eu não pude instalá-lo porque havia alguns pacotes quebrados e problemas / conflitos de dependência.

No final, eu tive que reinstalar o mysql

sudo apt-get remove mysql-client
sudo apt-get install mysql-server


2

Minha solução;

Ubuntu 18.04 (WSL)

/etc/mysql/my.cnf

!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/

/etc/mysql/mysql.conf.d/mysqld.cnf

[mysqld]
user            = mysql
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
port            = 3306

Eu mudei a porta. Funcionou para mim. Você pode escrever outra porta. Exemplo 3355


2

Por que obter este erro

Recebi novas atualizações das bibliotecas mysql, então atualizei o meu Kubuntu OS depois de obter esses erros.


Comandos que tentei e como corrigi-lo.

MySql-server está funcionando corretamente, mas quando eu tentei conectar sua doação

Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'.

Eu verifiquei /var/run/mysqld/mysqld.sock'.este diretório. Meus arquivos não existiam.

Eu também tentei esses comandos para conectar, mas não funcionou para mim.

 mysql -h 127.0.0.1 -P 3306 -u root -p

 sudo service mysql start

Depois de perder cerca de 2 horas, encontrei a solução

sudo apt-get clean
sudo apt-get update
sudo apt-get upgrade -f

Depois disso tudo consertou para mim.


Isso me ajudou a resolver o problema. Eu não entendo como isso está relacionado ao problema de
meias que

1

Mudar o hostpara 127.0.0.1funcionou para mim.

Edite o arquivo /etc/mysql/my.cnfe adicione a linha abaixo mencionada à seção:client

[client]
port  = 3306
host  = 127.0.0.1
socket  = /var/lib/mysql/mysql.sock

Depois que você terminar com isso. Execute o seguinte comando.

sudo service mysql start

Este meu amigo, me ajudou :)
Bhargav Nanekalva

@NBhargav estou tão feliz que u poderia resolver ur problema .. Felicidades amigo .. 😇😇
Dulith De Costa

1

Eu também verificaria a configuração do mysql. Eu estava enfrentando esse problema com meu próprio servidor, mas estava um pouco apressado e configurou incorretamente o innodb_buffer_pool_size para minha máquina.

innodb_buffer_pool_size = 4096M

Geralmente funciona bem até 2048, mas acho que não tenho a memória necessária para suportar 4 shows.

Eu imagino que isso também poderia acontecer com outras definições de configuração do mysql.


1

Eu tive um problema semelhante em um CentOS VPS. Se o MySQL não iniciar ou continuar travando logo após o início, tente estas etapas:

1) Encontre o arquivo my.cnf (o meu estava localizado em /etc/my.cnf) e adicione a linha:

innodb_force_recovery = X

substituindo X por um número de 1 a 6, começando de 1 e depois incrementando se o MySQL não iniciar. Definir 4, 5 ou 6 pode excluir seus dados, portanto, tenha cuidado e leia http://dev.mysql.com/doc/refman/5.7/en/forcing-innodb-recovery.html antes.

2) Reinicie o serviço MySQL. Somente SELECT será executado e isso é normal neste momento.

3) Despejar todos os seus bancos de dados / esquemas com o mysqldump um a um, não compactar os despejos, pois você teria que descompactá-los posteriormente de qualquer maneira.

4) Mova (ou exclua!) Apenas os diretórios do bd dentro de / var / lib / mysql, preservando os arquivos individuais na raiz.

5) Pare o MySQL e remova o comentário da linha adicionada em 1). Inicie o MySQL.

6) Recupere todos os CDs despejados em 3).

Boa sorte!


1

Tente o seguinte em um prompt do terminal:

sudo mysql

Depois que você entrar, você poderá criar um novo usuário e conceder os privilégios que deseja no banco de dados específico ao qual eles precisam acessar.

O Mysql 5.7 mudou algumas coisas e, por padrão, usa o plugin auth_socket (ao contrário de mysql_native_password) como root para proteger a conta contra invasões. Você pode substituir isso definindo o campo do plug-in como root, mas, a menos que tenha um bom motivo, provavelmente não deve contornar a proteção. Especialmente quando sudo mysqlé mais fácil do que mysql -u root -pqualquer outra maneira.

Descobri essas informações - de todos os lugares - em um site de ajuda do Raspberry Pi . Funcionou como um encanto depois que o Lubuntu 18.04 me incomodou por algumas horas.


1

Primeiro crie dir / var / run / mysqld

com o comando:

mkdir -p /var/run/mysqld

adicione rigths ao diretório

chown mysql:mysql /var/run/mysqld

depois desta tentativa

mysql -u root

1

Eu tive exatamente o mesmo problema. Depois de lutar por uma hora, encontrei uma maneira de corrigi-lo sem reinstalar o mysql-common, mysql-client, mysql-server.

Primeiro de tudo, vá para "/ var / run / mysqld". Você verá que o mysql.sock não existe. Simplesmente remova todo o diretório mysqld, recrie-o e forneça os privilégios necessários.

# rm -rf /var/run/mysqld && mkdir /var/run/mysqld && chown mysql /var/run/mysqld/

Agora, mate o processo mysql na sua totalidade. Pode ser possível que ele mostre o comando "aguardando limpeza de página" ao executar "/etc/init.d/mysql status" mesmo depois de desligar o serviço.

Para fechar completamente o serviço, use

# pkill -9 mysqld

Depois que o processo for encerrado, tente iniciá-lo novamente usando

# /etc/init.d/mysql start

E você verá que funciona bem! E também não haverá problema em pará-lo também.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.