Minha instalação do MySQL está quebrada. Como reconfigurá-lo completamente?

20

Aqui estão os seguintes comandos que eu executei.

$ sudo service mysql start
mysql start/running

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

$ aptitude search mysql |grep ^i
i   libapache2-mod-auth-mysql       - Module Apache 2 pour l'authentification vi
i   libdbd-mysql-perl               - Perl5 database interface to the MySQL data
i   libmysqlclient16                - MySQL database client library             
i   mysql-client-5.1                - MySQL database client binaries            
i   mysql-client-core-5.1           - MySQL database core client binaries       
i   mysql-common                    - MySQL database common files, e.g. /etc/mys
i   mysql-server-5.1                - MySQL database server binaries and system 
i   mysql-server-core-5.1           - MySQL database server binaries            
i   php5-mysql                      - MySQL module for php5                     
alm
fonte
alm - encontrar o seu mysql.log cat /var/log/mysql.loge editar a sua resposta withthis arquivo ....
hhlp
5
Eu gosto do jeito que você usou grep ^ i lá. Bastante inteligente.
Luis Alvarado
o que exatamente isto faz? O aptitude é ferramentas de instalação.
user4951
@ JimThio Isso é para encontrar os pacotes instalados relacionados a esta pergunta.
Reinstate Monica - ζ--

Respostas:

16

Antes de reinstalar, verifique / var / log / mysql para arquivos de logs que podem conter pistas sobre o motivo pelo qual o mysql não está funcionando. Se não houver logs, o log para arquivo pode não estar ativado na sua configuração: Configure o Mysql Error Log

Para reinstalar qualquer pacote, verifique a versão instalada com

dpkg -l|grep mysql-server

para a versão 5.7, use

sudo apt-get install mysql-server-5.7 --reinstall

Se isso não permitir que você reconfigure o pacote, poderá usar

sudo dpkg-reconfigure mysql-server-5.7
Ciaran Liedeman
fonte
sudo dpkg-reconfigure mysql-server-5.1 fez o truque para mim quando eu atualizado a partir de 11,10 para 12,04 mysqld eu não iria começar e eu fui forçado a mysqld manualmente sudo
Hanynowsky
7

ERRO 2002 (HY000): Não é possível conectar-se ao soquete local do servidor MySQL '/ tmp / mysql.sock' (2)

No MySQL, as instalações podem especificar onde teremos o soquete para conexões locais. Ao fazer atualizações, não é incomum ver o erro "Não é possível conectar-se ao socket-through do servidor MySQL local". Vamos ver como resolver esse problema.

O erro é assim:

Mysql-u root-p
Enter password:
ERROR 2002 (HY000): Can not connect to local MySQL server-through socket '/ tmp / mysql.sock' (2)

através ps, podemos ver se é especificado pelo parâmetro e o local onde está:

# ps -fea | grep mysqld
mysql    17661 14003  1 Feb19 ?        00:24:59 /usr/local/mysql-percona/libexec/mysqld --basedir=/usr/local/mysql-percona --datadir=/var/data/mysql/datadir/data --user=mysql --pid-file=/var/run/mysqld/mysqld.pid --skip-external-locking --socket=/var/lib/mysql/mysql.sock --log-error=/var/log/mysqld.log
root     23790  7840  0 09:25 pts/0    00:00:00 grep mysqld

Nesse caso, vemos que está dentro /var/lib/mysql/mysql.sock. Se não for encontrado como um parâmetro, consulte a seção mysqld /etc/my.cnfpara encontrar o parâmetro:

grep socket /etc/my.cnf
socket=/var/lib/mysql/mysql.sock

Se sabemos onde está, precisamos modificar o mesmo arquivo ( /etc/my.cnf) e adicionar o cliente de soquete da seção de parâmetros:

[client]
default-character-set=utf8
socket=/var/lib/mysql/mysql.sock
hhlp
fonte
11
Era isso que eu ia colocar como resposta. Eu já sei que esta é a resposta correta para quase todos os problemas relacionados como este. Marcará você quando eu tiver a habilidade novamente.
Luis Alvarado
obrigado pela explicação completa! no meu caso, mesmo se eu especificasse um soquete no my.cnf, ele não o escutaria (os parâmetros mostrados em 'ps' estão vazios e nenhuma conexão é possível. solução alternativa: adicione 'protocoll = tcp' à seção do cliente em my.cnf para forçar usando tcp e não da tomada.
Tapper
2

Para os últimos espectadores:
eu encontrei um erro semelhante quando não consegui atualizar o pacote mysql-server, mas achei que isso resolveu o meu problema . Quando sudo apt-get install -fnão funcionar, tente sudo apt-get purge mysql*. Agora você pode reinstalar o mysql-server.

artificerpi
fonte
11
observe que sudo apt-get purge mysqlnão preservará seus bancos de dados
Nelson Owalo 17/17/17
1

Um dos problemas que estou enfrentando é saber em qual versão estou tendo problemas. Essa foi uma ideia interessante:

$ aptitude search mysql |grep ^i

Mas aqui está o que eu achei crucial na questão:

$ apt-get --reinstall install mysql-server-5.x

(onde x é a versão. Se você não adicionar isso, poderá estar trabalhando com o dpkg errado.

Netsec
fonte
0

Isso funcionou para mim

sudo apt purge mysql*
sudo apt autoremove
sudo apt autoclean
sudo apt install mysql-server

Descrição

1) O primeiro comando remove tudo relacionado ao MySQL com seus arquivos de configuração.

2) O segundo remove os pacotes que não são mais necessários.


Atualizações [!]:

1) DigitalOcean

A - O
fonte