Escenario
No conseguimos conectarnos al servidor de mysql desde la propia máquina, pero sí remotamente.
Cuando el cliente de MySQL se conecta a localhost, lo intenta usando un fichero socket en vez de el protocolo TCP/IP.
Una manera pues de solucionar el problema es especificando la IP del host:
mysql -uroot -p -h 127.0.0.1
Para solucionarlo de manera permanente, primero confirmamos que la configuración de MySQL es correcta mirando el fichero /etc/mysql/my.cnf o, dependiendo de la versión instalada, /etc/mysql/conf.d/mysql.cnf. Confirmamos que existe la siguiente entrada y que la ruta es correcta:
[client]socket = /var/lib/mysql/mysqld.sock
En caso de que no sea correcta o no exista, la corregimos y reiniciamos el servidor.
sudo /etc/init.d/mysql restart
Si después de reiniciar, el error persiste. Posiblemente sea un problema de permisos de la carpeta que solucionaríamos de la siguiente manera:
sudo chmod -R 755 /var/lib/mysql/