MySQL은 127.0.0.1을 호스트 이름으로 확인합니다.

MySQL은 127.0.0.1을 호스트 이름으로 확인합니다.

다음 명령을 사용하여 mysql에 연결하려고 합니다.

mysql -h 127.0.0.1

오류가 뜹니다

ERROR 1045 (28000): Access denied for user 'root'@'mydomain.com' (using password: NO)

127.0.0.1이 내 도메인 이름으로 변환되는 이유는 무엇이며 어떻게 해결할 수 있나요?

그러나 호스트를 지정하지 않으면(그리고 확장하여 'localhost'가 지정된 경우) 작동합니다.

편집하다: TCP를 사용하면 도메인 이름으로 해석되는 것 같아서 사용시에도 실패합니다.

mysql -h localhost --protocol=TCP

편집2: Skip-name-resolve를 사용하면 가 의 공용 IP인 것으로 mydomain.com대체된다는 점을 제외하면 비슷한 출력이 나타납니다 .x.x.x.xmydomain.com

답변1

모든 외부 패킷(lo 포함)에 대해 가장을 수행했습니다. 규칙 을 제거/편집하면 iptable -t nat POSTROUTING문제가 해결되었습니다.

답변2

이는 호스트 파일 항목으로 인해 발생했을 가능성이 높습니다.

답변3

어쩌면 mysql이 0.0.0.0이 아닌 공개 IP에서만 수신 대기하고 있습니까?

답변4

1) /etc/hosts를 확인하고 127.0.0.1이 mydomain.com이 아닌 localhost만 가리키는지 확인하십시오. mydomain.com은 localhost.localdomain이 아닌 서버의 실제 IP 주소와 연결되어야 합니다.

2) 또한 mysql 인스턴스에 루트에 대한 비밀번호를 설정한 것 같습니다(실제로 이는 좋은 것입니다). 다음과 같이 로그인에 "-p" 스위치를 추가하는 것이 좋습니다.

mysql -h 로컬호스트 -p

그러면 루트의 비밀번호를 입력하라는 메시지가 표시됩니다. 도움이 되었기를 바랍니다.

관련 정보