Thursday, October 18, 2012

Como hacer una reinstalación fresca de MySQL en RedHat6.

Tan reciente como hoy por razones ajenas a mi voluntad tuve que volver a reinstalar MySQL en uno de mis servidores. Y luego de 3 horas de buscar aquí y allá finalmente tengo MySQL corriendo nuevamente. 

**PRECAUCION**
En mi caso yo estaba en un ambiente de pruebas y no me importaba la data en las bases de datos. Si tiene data importante y esta en un ambiente de producción le recomiendo NO seguir esta guía y y que busque otra manera de reestrablecer su MySQL. Queda advertido.


1. Nos logueamos como root, bajamos el servicio de MySQL y desinstalamos todo lo que tenga q ver con el.


# service mysqld stop
# yum remove mysql*         

2. Borramos el archivo /var/lib/mysql (directorio default de la instalación) y /etc/my.cnf. 


# rm -rf /var/lib/mysql  
# rm /etc/my.cnf

Vamos al home folder de root y con el comando ls -a buscamos entre los hidden files alguno que se llame .my.conf o .mysql_history y lo borramos. 


# ls -a
.                .bash_profile  install.log         .tcshrc
..               .bashrc        install.log.syslog  .viminfo
anaconda-ks.cfg  .cshrc         .mysql_history      .Xauthority
.bash_history    .dbus          .pki                xorg.conf.new
.bash_logout     .gconf         .ssh
# rm .mysql_history
3. Ya hemos desinstalado MySQL efectivamente, ahora tenemos que instalarlo denuevo. 

# yum groupinstall mysql  
Ya MySQL debe haberse instalado en su default folder '/var/lib/mysql'. 

4. Para  asegurarnos que el folder de MySQL tenga los permisos correctos ejecutamos este comando.

# chown -R mysql:mysql /var/lib/mysql/*  
5. Tenemos que crear el archivo de configuracion My.cnf de MySQL en /etc/. Puede utilizar su editor favorito.

# vim /etc/my.cnf 

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

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
port=3306
Guarde el archivo.

6. Comienze el servicio con el comando service mysqld start.


Posibles Situaciones

Basado en lo que me paso a mi el servicio de MySQL no me subio por varios errores. Puede encontrar descripción detallada de cualquier error con que se tope en un archivo llamado  $HOSTNAME.err dentro de /var/lib/mysql/

1.El servicio de MySQL subió pero no me pertmitía logearme como root.

2.En $HOSTNAME.err me salía - Error: Can't find file: './mysql/users.frm' (errno: 13)

Esto es un error de permisología. Asegurese que haya corrido este comando.
# chown -R mysql:mysql /var/lib/mysql/*  

3. El archivo de /var/lib/mysql esta vacío luego de reinstalarlo.

A mi entender esto es causado a algún archivo de MySQL que no se borró antes de reinstalar. En mi caso no sabía de la existencia del archivo .mysql_history en el home folder del usuario, en cuanto lo borre y reinstalé todo salió bien.

Ya saben, si en algo me necesitan arreglenselas como puedan!