Mi instalación de MySQL está rota. ¿Cómo reconfigurarlo por completo?

20

Aquí están los siguientes comandos que he hecho.

$ 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
fuente
alm - encuentra tu mysql.log cat /var/log/mysql.logy edita tu respuesta con este archivo ...
hhlp
55
Me gusta cómo usaste grep ^ i allí. Bastante inteligente
Luis Alvarado
¿Qué hace exactamente? aptitud es herramientas de instalación.
user4951
@ JimThio Eso es para encontrar los paquetes instalados relacionados con esta pregunta.
Restablece a Monica - ζ--

Respuestas:

16

Antes de reinstalar check / var / log / mysql para archivos de registro que pueden contener pistas sobre por qué mysql no funciona. Si no hay registros, es posible que el registro en el archivo no esté habilitado en su configuración: Configure Mysql Error Log

Para reinstalar cualquier paquete, verifique la versión instalada con

dpkg -l|grep mysql-server

entonces para la versión 5.7 use

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

Si esto no le permite reconfigurar el paquete, puede usar

sudo dpkg-reconfigure mysql-server-5.7
Ciaran Liedeman
fuente
sudo dpkg-reconfigure mysql-server-5.1 hizo el truco por mí cuando actualicé de 11.10 a 12.04, mysqld no comenzó y me
vi
7

ERROR 2002 (HY000): No se puede conectar al servidor MySQL local a través del socket '/ tmp / mysql.sock' (2)

En las instalaciones de MySQL podemos especificar dónde tendremos el socket para las conexiones locales. Al hacer actualizaciones no es raro ver el error "No se puede conectar al servidor MySQL local". Veamos cómo resolver este problema.

El error se ve así:

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

a través pspodemos ver si se especifica por parámetro y el lugar donde 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

En este caso vemos que está adentro /var/lib/mysql/mysql.sock. Si no se encuentra como parámetro, debe buscar en la sección mysqld de /etc/my.cnfpara encontrar el parámetro:

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

Si sabemos dónde está, debemos modificar el mismo archivo ( /etc/my.cnf) y agregar el cliente de socket de la sección de parámetros:

[client]
default-character-set=utf8
socket=/var/lib/mysql/mysql.sock
hhlp
fuente
1
Eso es lo que iba a poner como respuesta. Ya sé que esta es la respuesta correcta para casi todos los problemas relacionados como este. Te hará +1 cuando vuelva a tener la habilidad.
Luis Alvarado
Gracias por la explicación detallada! en mi caso, incluso si especifiqué un socket en my.cnf no lo escuchó (los parámetros que se muestran en 'ps' están vacíos y no es posible la conexión. solución alternativa: agregue 'protocololl = tcp' a la sección del cliente en my.cnf para fuerza usando tcp y no el zócalo.
Tapper
2

Para los últimos espectadores:
llegué a un error similar cuando no pude actualizar el paquete mysql-server, pero descubrí que esto resolvió mi problema . Cuando sudo apt-get install -fno funciona, inténtalo sudo apt-get purge mysql*. Ahora puede reinstalar mysql-server.

Artererpi
fuente
1
tenga en cuenta que sudo apt-get purge mysqlno conservará sus bases de datos
Nelson Owalo
1

Uno de los problemas con los que me encuentro es saber con qué versión estoy teniendo problemas. Esta fue una buena idea:

$ aptitude search mysql |grep ^i

Pero esto es lo que encontré que fue crítico en el tema:

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

(donde x es la versión. Si no agrega esto, podría estar trabajando con el dpkg incorrecto.

Netsec
fuente
0

Esto funciono para mi

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

Descripción

1) El primer comando elimina todo lo relacionado con MySQL con sus archivos de configuración.

2) El segundo elimina aquellos paquetes que ya no son necesarios.


Referencias [!]:

1) DigitalOcean

A - O
fuente