I had the same exact issue on my ArchLinux VPS today.
mysql -u root -p
just didn't work, whereas mysql -u root -pmypassword
did.
It turned out I had a broken /dev/tty device file (most likely after a udev upgrade), so mysql couldn't use it for an interactive login.
I ended up removing /dev/tty and recreating it with mknod /dev/tty c 5 1
and chmod 666 /dev/tty
. That solved the mysql problem and some other issues too.