Windows Navicat이 Docker의 MySQL에 연결하고 오류 2003, 10060 "알 수 없는 오류"를 보고합니다.

1. 배경

이전에는 docker를 설치하고 MySQL 컨테이너를 실행하기도 했고, navicat을 이용하여 docker에서 MySQL에 접속해서 데이터베이스를 생성하기도 했는데요, 한동안 Windows를 사용하지 않고 MacOS로 전환했다가 다시 Windows 컴퓨터로 돌아와서 navicat을 발견했습니다. 데이터베이스를 연결할 수 없습니다. 오류 스크린샷은 다음과 같습니다.

(문제가 해결되었기 때문에 오류 사진을 찾을 수 없습니다. 이 사진은 오류를 재현하기 위해 다른 사람의 사진을 복사한 것입니다
.)여기에 이미지 설명을 삽입하세요.

2. 나는 무엇을 시도했는가?

  1. 나는 다음을 사용하여 컨테이너에 들어갑니다.mysql -uroot -pMySQL에 로그인하는 것은 가능하지만 Docker MySQL에 대한 외부 연결을 사용하는 것은 가능하지 않은 것으로 확인되어 문제 자체는 컨테이너 내부에 있지 않은 것으로 추측됩니다.
  2. 인터넷에서 Baidu가 제공하는 대부분의 솔루션은 콘솔을 사용하여 MySQL에 로그인하고 루트 사용자가 %(모든 IP 연결이 허용됨)인지 확인한 다음 어떤 권한을 구성하고 비밀번호를 변경하고 권한을 새로 고치는 것입니다. , 가능성이 매우 낮다는 것을 알지만, 문제를 해결하기 위해 다시 시도했지만 최종 결과는 실제로 해결되지 않았습니다.
  3. 그러다가 인터넷에서 도커 머신의 IP를 확인하려고 했다는 것을 보고(내 윈도우가 리눅스를 시뮬레이트했기 때문에 WLS라던가 뭐라 부르던 것 같더니 도커 데스크톱에 제공해서 사용하게 됐다) 이렇게 입력했다. Linux 기계는 ifconfig를 통해 자신의 IP를 확인하고 navicat에 이 IP로 IP 주소를 입력하려고 시도하지만 여전히 작동하지 않습니다! 이때쯤엔 이미 더러운 말이 가득했지~
  4. 나중에 믿기지 않아서 포트 매핑을 다시 확인해 보니 과연 외부 3306에 매핑된 3306이더군요. 더 이상 믿을 수가 없었습니다. 원래 MySQL 컨테이너를 닫고 다시 실행하면 안 될까요? 능숙하게 사용했습니다. 명령 세트(마운트 디렉토리 무시):
docker run -p 3306:3306 --name mysql8 -e MYSQL_ROOT_PASSWORD=123456  -d mysql

이때 가보니 컨테이너가 실행이 안되는걸 발견하고 깜짝 놀랐습니다~
오류 메시지는 대략 다음과 같았습니다.

포트를 사용할 수 없습니다. 포트 노출 TCP 0.0.0.0:xxxxx -> 0.0.0.0:0: Listen tcp 0.0.0.0:xxxxx: 바인딩: 액세스 권한에 의해 금지된 방식으로
소켓에 액세스하려는 시도가 있었습니다 .

그런 다음 다시 돌아가 원래 닫혀 있던 컨테이너를 시작하려고 시도했지만 시작할 수 없다는 것을 발견했습니다. 좋습니다. Baidu가 이런 실수를 했습니다.

3. 해결

위에 표시된 포트를 사용할 수 없는 이유를 바탕으로 검색 엔진에서 찾은 솔루션은 다음과 같습니다.
winnat 다시 시작

  • 단계:
  1. PowerShell을 관리자로 실행
  2. 그만해
net stop winnat
  1. winnat 시작
 net start winnat

그런 다음 다시 컨테이너를 실행했는데 컨테이너가 살아 있었습니다!

navicat에서 my MySQL에 접속해 와~ 잘 되네
여기에 이미지 설명을 삽입하세요.
새로 생성된 컨테이너를 삭제하고 하루 만에 끝내자!

추천

출처blog.csdn.net/qq_17229141/article/details/126478908