Le batallé un rato con esto y decidí publicarlo.
Los weyes de MySQL/Oracle cambian esto cada mes (no es cierto). Estos son los pasos a seguir para hacer todas tus conexiones UTF-8 con MySQL.
Si eres dueño del servidor (y recuerdas el password de root), solo agrega lo siguiente en /etc/my.cnf; debajo de [mysqld]:
# Set default charset to UTF-8
character_set_client=utf8
character_set_server=utf8
collation_server=utf8_unicode_ci
default-character-set=utf8
skip-character-set-client-handshake
Así, no tendrás que usar SET NAMES 'utf8'; antes de cada conexión.
Si no lo eres, simplemente agrega:
SET NAMES 'utf8';
charset 'utf8';
Además, otra solución (según los comments en el manual): en tu .htaccess, puedes agregar:
AddDefaultCharset UTF-8
Para ver tus variables, intenta esta query como usuario root (en mysql)
SHOW VARIABLES LIKE 'character_set%';
SHOW VARIABLES LIKE 'collation%';