Docker로 MySql 띄우고 local 컴터에서 접속하기
[참고] https://stackoverflow.com/questions/33001750/connect-to-mysql-in-a-docker-container-from-the-host
띄우기
$ docker run --name some-mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag docker run --name local-mysql -e MYSQL_USER=gurudev -e MYSQL_PASSWORD=pass123 -e MYSQL_ROOT_PASSWORD=1234 -d -p 3306:3306 mysql:8.0.28-oracle
접속하기
mysql -h 127.0.0.1 -P 3306 -u root mysql -h localhost -P 3306 --protocol=tcp -u root
- 위와 같이 127.0.0.1로 하면 mysql socket을 써서 하는 것이 아닌 tcp를 이용해서 커넥션을 맺으려 하기에 연결이 가능해짐. mysql socket을 이용하여 docker container 안의 mysql 과 연결 맺는건 안됨
- 127.0.0.1 로 연결을 맺으려 하면 TCP stack을 이용하는 것이고 localhost로 연결을 시도하면 unix socket을 이용해서 연결을 시도하려 함
- socket은 파일로 나타내지는 연결임. docker container와 host machine 사이에 socket file 공유가 안되니 mysql socket으로는 연결이 안된다고 함
- 끝에 -p 붙이면 패스워드 물어봄