systemadmin.es > DBA > Malas costumbres en el my.cnf

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.

Deja un comentario:

XHTML - Tags permitidos:<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>