4

Кто-нибудь знает, что может быть ошибка, когда я могу подключиться к моему серверу MySQL через localhost, но не через 127.0.0.1? AFAIK, они должны маршрутизироваться одинаково, и никакой дополнительный уровень TCP не должен создаваться при использовании IP.

$ mysql -u root -h localhost -D test # works
$ mysql -u root -h 127.0.0.1 -D test # does not work
(127.0.0.1 does map to localhost/vice versa)

Табличные разрешения явно установлены для включения обоих методов.

2 ответа2

4

Клиентская библиотека MySQL переопределяет localhost для использования сокета Unix вместо соединения TCP/IP с 127.0.0.1. Если вы можете подключиться к localhost, но не к 127.0.0.1, это говорит о том, что он либо firewalled, либо не прослушивает 127.0.0.1.

2

В руководстве по подключению к серверу MySQL предлагается использовать следующий синтаксис:

shell> mysql --host=127.0.0.1

Объяснение:

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .