Lo único que se me ocurre es inspeccionar lo que realmente está haciendo mysqld usando strace, como usuario root:
strace -p 2959
Normalmente, strace debería bloquearse inmediatamente y mostrarle una llamada a select(), porque mysqld debería estar esperando conexiones.
La llamada debería ser algo como:
select(SOCKETNO, [OTHER_FDs], NULL, NULL, NULL)
especialmente importante es el cuarto parámetro, que es un timeval de tiempo de espera. Si es NULL, significa que mysqld dormirá hasta que alguien se conecte. Si no es NULL, significa que mysqld esperará el tiempo especificado y luego realizará algún trabajo de mantenimiento. Un timeval muy pequeño podría explicar el consumo de CPU.
Creo que MySQL siempre emplea un tiempo de espera NULL (infinito). Tiene sentido y así es como se comportan los mysqlds a los que puedo acceder ahora.
Sin embargo, puede haber algunos problemas de manejo de la conexión que impidan que Select vuelva a dormir. Compruebe si este comportamiento aparece tan pronto como se inicia mysqld o después de que alguien se conecta.