1. История
Раньше я установил докер и запустил контейнер MySQL. Я также использовал navicat для подключения к MySQL в докере и создания базы данных. Я на некоторое время перестал использовать Windows и перешел на MacOS. Затем я вернулся к компьютеру с Windows и нашел navicat. База данных не может быть подключена. Скриншот ошибки выглядит следующим образом.
(Поскольку моя проблема решена, я не могу найти картинку ошибки. Эта картинка скопирована с чужой, чтобы воспроизвести ошибку
)
2. Что я пробовал?
- Я вхожу в контейнер, используяMySQL -uroot -pОбнаружено, что вход в MySQL возможен, но использование внешнего подключения к Docker MySQL нецелесообразно, поэтому предполагается, что сама проблема не внутри контейнера.
- Большинство решений, предоставляемых Baidu в Интернете, заключаются в использовании консоли для входа в MySQL, проверке того, является ли пользователь root % (разрешены все IP-соединения), а затем настройке разрешений, изменении пароля и обновлении разрешений. , хотя я знаю, что это крайне маловероятно.Чтобы решить проблему, я попробовал еще раз, но окончательный результат действительно не был решен.
- Затем я увидел в Интернете, что я пытался проверить IP-адрес докер-машины (поскольку моя Windows имитировала Linux, она, кажется, называлась WLS или что-то в этом роде, а затем предоставила ее для использования Docker Desktop), я ввел это Linux Машина проверяет свой IP через ifconfig, и пытается заполнить IP адрес как этот IP в navicat, но всё равно не получается! К этому времени я уже был полон грязных слов~
- Позже я не поверил, поэтому еще раз проверил сопоставление портов, и оказалось, что это действительно был 3306, сопоставленный с внешним 3306. Я больше не верил. Могу ли я закрыть исходный контейнер MySQL и запустить его снова? Тогда я использовал умело.Набор команд(игнорируя директорию монтирования):
docker run -p 3306:3306 --name mysql8 -e MYSQL_ROOT_PASSWORD=123456 -d mysql
В это время я обнаружил, что контейнер не может запуститься, когда я туда зашел. Я был удивлен ~
сообщение об ошибке было примерно следующим:
Порты недоступны: открытый порт TCP 0.0.0.0:xxxxxx -> 0.0.0.0:0:
прослушивание TCP 0.0.0.0:xxxxx: привязка: Была предпринята попытка получить доступ к сокету
способом, запрещенным его разрешениями на доступ.
Затем я вернулся и попытался запустить изначально закрытый контейнер, но обнаружил, что его запустить невозможно. Хорошо, Baidu допустила эту ошибку.
3. Решить
В зависимости от причины, по которой указанный выше порт недоступен, поисковая система находит решение:
Перезапустить Виннат
- Шаги:
- Запустите PowerShell от имени администратора
- останови Виннат
net stop winnat
- Запустить Winnat
net start winnat
Затем я вернулся, чтобы запустить свой контейнер, и он оказался жив!
Подключитесь к моему MySQL в navicat, вау~ это работает.
Удалите вновь созданный контейнер и хватит!