Archivos de configuración (en una instalación por default en debian via dpkg):
Archivo global (server & client): /etc/mysql/my.cnf
Archivo para opciones específicas del server: /var/lib/mysql/my.cnf
Archivo de opciones para cada usuario (obviamente para el cliente): ~/.my.cnf
Server
Por algún motivo extraño, a partir de MySQL 4.1 (en que apareció el "character set" y "collation"), el character set por default es 'latin1' (es iso-8859-1, lo cual no deja de ser levemente razonable), pero lo delirante es que el collation por default es 'latin1_swedish_ci'... yo no sé si la gente que escribe mysql es sueca o qué, pero esto es un espanto (debería haber sido, más bien, 'latin1_general_ci'.
De todos modos, lo que a nosotros nos interesa es que el character set sea 'utf8' y que se ordene en español.
Para hacer esto hay que editar el archivo de configuración global (usualmente /etc/mysql/my.cnf) y, dentro de este archivo, buscar la sección [mysqld] y poner en algún lado las siguientes líneas:
character-set-server=utf8 collation-server=utf8_spanish_ci
Luego, hay que restartear el server:
/etc/init.d/mysql restart
Si llega a haber errores, pese a que se queje de que falta un archivo, lo más posible es que sea un moco en el archivo de configuración... fijarse bien en el syslog y buscar líneas del tipo:
Oct 4 11:35:45 localhost mysqld[28267]: 061004 11:35:45 [ERROR] /usr/sbin/mysqld: unknown variable 'charset-server=utf8'
-- MarianoAbsatz 2006-10-04 11:49:33
La primera vez que se inicia el mysql 4.1 con un charset/collation forzado (como estamos haciendo), el pibe agarra todas las bases "viejas" (que no tenían forzado el charset/collation) y les encaja el default. Sin embargo, si después cambiamos el default, todas las bases/tablas que tengan ya un charset/collation, no se cambian (est es bueno).
-- MarianoAbsatz 2006-10-04 11:54:42
Client
Si bien el manual dice que no es necesario, al invocar al cliente desde la línea de comandos con un archivo de entrada en UTF8, se mamó y leyó el archivo como si fuera latin1, con lo cual edito el archivo de configuración global (usualmente /etc/mysql/my.cnf) y, dentro de este archivo, buscar la sección [client] y poner en algún lado las siguientes líneas:
default-character-set=utf8
Obviamente, no es necesario restartear el server, ya que estas opciones sólo afectan al cliente.
-- MarianoAbsatz 2006-10-04 13:25:33
.