Ответ 1
localhost
имеет специальную оболочку и использует UNIX-сокеты вместо TCP/IP. 127.0.0.1
не получает эту специальную обработку.
Смотрите документацию:
В Unix программы MySQL обрабатывают имя хоста localhost специально таким образом, который, вероятно, отличается от ожидаемого по сравнению с другими сетевыми программами. Для соединений с localhost программы MySQL пытаются подключиться к локальному серверу с помощью файла сокета Unix. Это происходит, даже если задана опция -port или -P для указания номера порта. Чтобы клиент установил TCP/IP-соединение с локальным сервером, используйте -host или -h, чтобы указать значение имени узла 127.0.0.1 или IP-адрес или имя локального сервера. Вы также можете указать протокол подключения явно, даже для localhost, с помощью опции --protocol = TCP.
Если он не работает при использовании TCP/IP, база данных, вероятно, не прослушивается в сети. Это, как правило, хорошо, так как повышает безопасность (не то, что прослушивание 127.0.0.1 вызывает какие-либо проблемы, но прослушивание всех интерфейсов дает больше возможностей для атак).
Если вы действительно хотите разрешить подключения через сеть, см. skip-networking.