MySQL localhost와 127.0.0.1의 차이

, ,

맥에 MAMP를 이용해서 아파치, MySQL, PHP를 설치하고 워드프레스를 돌렸는데요. 한참 사용하다 보니 설정할 때 DB HOST를 localhost라고만 썼지 MAMP가 사용하는 포트인 8889번을 설정에 적지 않았다는 걸 깨달았습니다.

그런데 웬걸, 디비에는 접속이 잘 되고 있었습니다. 제가 착각했나 싶어서 3306번 포트에서 돌아가고 있던 HomeBrew로 설치한 MySQL을 종료하고 테스트해 봤지만 역시나 MAMP에 설치한 워드프레스는 잘 돌아갔습니다.

비밀은 소켓에 있었습니다. MySQL은 호스트가 localhost로 지정되면 리눅스(와 같은 Unix 계열 운영체제)에선 TCP/IP를 사용하지 않고 유닉스 파일 소켓을 이용합니다(/Applications/MAMP/tmp/mysql/mysql.sock으로 php.ini에 적혀 있고, MySQL 설정에도 적혀 있음). 그래서 localhost라고만 적었을 땐 포트번호에 상관없이 MySQL이 작동했던 것입니다.

윈도우에선 localhost라고 적으면 공유 메모리를 사용한다고 하고요(사용 가능한 경우). 그 외 연결이 어떻게 되는 건지 규칙이 있는데, 이도 저도 안 되면 마지막엔 TCP/IP를 사용합니다. 자세한 내용은 MySQL 문서를 보면 나와 있습니다.

리눅스에서도 호스트를 127.0.0.1이라고 IP 주소로 적으면 TCP/IP를 이용합니다. 실제로 wp-config.php의 DB_HOST를 127.0.0.1로 변경하자 디비를 찾지 못했습니다. 127.0.0.1:8889라고 적어 줘야 찾았습니다.

간단한 의문이었지만 흥미로운 탐구였습니다.

👇 카테고리 글 목록

, ,

대표글

댓글 남기기