Malas costumbres en el my.cnf

Realizando una actualización de MySQL me encontré con una mala costumbre bastante común.

Al ejecutar el mysql_upgrade fallaba:

# mysql_upgrade 
Looking for 'mysql' as: mysql
Looking for 'mysqlcheck' as: mysqlcheck
FATAL ERROR: Upgrade failed

Por lo que me decidí a ejecutar los comandos manualmente:

mysqlcheck --all-databases --check-upgrade --auto-repair  
mysql < fix_priv_tables  
mysqlcheck --all-databases --check-upgrade --fix-db-names --fix-table-names

Ejecutando el primero (mysqlcheck) me encontré con el problema real:

# mysqlcheck --all-databases --check-upgrade --auto-repair
mysqlcheck: Got error: 2002: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) when trying to connect

En el my.cnf estaban añadidas las opciones (cómo dónde deja el socket el mysqld) para cada binario que se utiliza:

[mysql]
port                           = 3306
socket                         = /var/run/mysqld/mysqld.sock

[mysqldump]
socket                         = /var/run/mysqld/mysqld.sock

En lugar de utilizar la sección genérica "client":

[client]
port                           = 3306
socket                         = /var/run/mysqld/mysqld.sock

Mediante esta sección añadimos las opciones para cualquier cliente, por lo que el mysql_upgrade no fallaría. En caso que alguno de ellos necesite alguna opción diferente siempre se puede añadir para él opciones específicas.

Tags: MySQL



Malas costumbres en el my.cnf was first posted on August 27, 2014 at 6:31 am.