Почему мой IP-адрес MySQL отличается от IP-адреса физического сервера, на котором он работает?

Это может быть очень глупый вопрос, но я * новичок в MySQL, и я только что обнаружил, что MySQL имеет другой ip, т.е. 127.0.0.1, и его имя хоста (localhost), чем ip компьютера, который является 192.168.1.3, и имя хоста компьютера ceres, почему это так?

Я подключился к MySQL, работающему на другой машине, используя MySQL Workbench:

и это показывает, что я вошел в систему для пользователя root mysql 127.0.0.1 на pi@192.168.1.3

затем

Я хотел вставить данные в БД удаленно, используя Arduino MCU, и я точно не могу написать 127.0.0.1

3 ответа

Решение

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

127.0.0.1 является интерфейсом обратной связи и используется при локальном подключении к службе mysql (на том же сервере, где работает служба mysql).

Если вам нужно подключиться к сервису mysql с другого компьютера, вам потребуется его IP-адрес. Ты можешь использовать ifconfig чтобы увидеть, какой IP-адрес назначен серверу.

Вы должны немного понять TCP/IP, чтобы следить за тем, что здесь происходит. Каждый стек TCP/IP (реализация) имеет внутренний интерфейс обратной связи под адресом 127.0.0.1 (для IPv4) или ::1 (для IPv6). Это облегчает доступ к стеку на локальной машине, не зная его TCP/IP-адрес (или даже если он не имеет).

Затем каждому компьютеру, участвующему в сети TCP/IP, необходим адрес, по которому он известен в этой сети (в вашем случае 192.168.1.3). Когда вы работаете на локальном компьютере, не имеет значения, используете ли вы его общедоступный IP-адрес или петлевой интерфейс. Третий вариант - это имя localhost который разрешается в петлевой интерфейс. Но будьте осторожны: это зависит от ОС, если это в конечном итоге на IPv4 или вариант IPv6.

Как вы знаете, вы можете указать хост для пользователя, который решает, с кем он может подключиться. И здесь user@localhost а также user@127.0.0.1 (или же user@::1) не один и тот же хост. Терминал MySQL неявно обрабатывает локальный IP-адрес и IP-адрес обратной связи для удобства пользователя, но другие клиенты этого не делают. Указанный здесь адрес привязки обычно вообще не используется. Это для особых сценариев, которые здесь не актуальны. За более чем 10 лет мне никогда не приходилось устанавливать адрес привязки для MySQL.

Обновление: я надеюсь, что downvoters прокомментируют свои действия, чтобы показать, нужно ли что-то улучшить в моем ответе, или они просто неосведомлены.

Другие вопросы по тегам