localhost에서 Docker MySQL 컨테이너에 연결하시겠습니까?
docker mysql 이미지가 실행되고 있습니다.다음은 docker-compose.yml 파일의 예를 나타냅니다.
db:
image: mysql
environment:
MYSQL_ROOT_PASSWORD: ""
MYSQL_ALLOW_EMPTY_PASSWORD: yes
ports:
- "3306:3306"
이거 잘 돼.
질문입니다.호스트(macbook)의 명령줄 mysql 클라이언트에서 해당 컨테이너에서 실행되는 MySQL 인스턴스에 연결하려면 어떻게 해야 합니까?
명확히 하기 위해:
- Docker가 설치된 맥북이 있습니다.
- 나는 mysql을 가진 도커 컨테이너를 가지고 있다.
- macbook의 터미널에서 상기 컨테이너에서 실행 중인 mysql 인스턴스에 접속하고 싶다.
- .
docker
명령어를 사용합니다.'하다', '하다', '다', '다', '다', '다', '다', '다', '다',mysql
(도커 컨테이너를 통해 터널링하지 않고) 터미널에서 직접 클라이언트를 전송합니다.
MySQL이 로컬로 실행되고 있지 않으므로 포트 3306이 열려 있고 사용할 준비가 되어 있어야 합니다.
할 때 는 다음과 같습니다.docker-compose run
「」를 사용합니다.docker-compose up
를 공개했으므로3306
도커 호스트에서는, 그 호스트 자체로부터 접속할 수 있습니다.127.0.0.1:3306
「」를 사용합니다.docker-compose run
의 docker-compose.yml
파일은 무시됩니다.포트 매핑섹션을 검토하려면 다음 옵션을 추가해야 합니다.
docker-compose run --service-ports db
추가 메모
로는 mysql 는 mysql 합니다.localhost
꼭 .을 사용하세요.127.0.0.1
andlocalhost
:
$ mysql -h 127.0.0.1 -P 3306 -u root
MySQL 모니터에 오신 것을 환영합니다.명령어는 ; 또는 \g로 끝납니다.MySQL 연결 ID는 1 서버 버전: 5.6.26 MySQL Community Server(GPL)입니다.
저작권(c) 2000, 2015, Oracle 및/또는 관련 회사.무단 전재 금지.
Oracle은 Oracle Corporation 및/또는 그 계열사의 등록 상표입니다.기타 이름은 해당 소유자의 상표입니다.
도움말을 보려면 'help;' 또는 '\h'를 입력하십시오.현재 입력문을 지우려면 '\c'를 입력하십시오.
mysql >
$ mysql -h localhost -P 3306 -u root
오류 2002(HY000):소켓 '/var/run/mysqld/mysqld'를 통해 로컬 MySQL 서버에 연결할 수 없습니다.양말' (2)
해서 정답은 '먹다'를 쓰면 .--service-ports
(옵션)을 실행합니다.docker-compose
docker-compose run --service-ports db
합니다.) (docker-docker.yml은 docker-docker.yml로 동작합니다.)
도와줘서 고마워요!
Docker MySQL 호스트가 올바르게 실행 중인 경우 로컬 시스템에서 연결할 수 있지만 다음과 같이 호스트, 포트 및 프로토콜을 지정해야 합니다.
mysql -h localhost -P 3306 --protocol=tcp -u root
도커 컨테이너 내에서 MySQL을 실행하고 있기 때문에 소켓을 사용할 수 없으며 TCP를 통해 연결해야 합니다.mysql 명령어로 "--protocol"을 설정하면 이 설정이 변경됩니다.
도커 이미지 내의 MySQL에 로그인하는 간단한 방법은 다음과 같습니다.
sudo docker exec -it <CONTAINER_ID> mysql -u root -p
mySQL의 경우root
기본 비밀번호는 설정되어 있지 않습니다.그것은 공백입니다.루트 비밀번호를 변경하지 않는 한 Enter/Return 키를 누르기만 하면 됩니다.
정상적으로 실행되면 위의 명령어를 실행하면 mysql 프롬프트가 나타납니다.
건배!
이건 나한테 효과가 있었어요.
/usr/local/mysql/bin/mysql -h 127.0.0.1 -P 3306 -u root -p
사용할 수 있습니다.--network="host"
docker run 명령어를 사용하여127.0.0.1
또는localhost
도커 컨테이너가 도커 호스트를 가리킵니다.
docker run --network="host" -p 8080:8080 <your-docker-Image>
yml 파일이 보기 좋습니다.
도커 컨테이너는 이미 로컬 포트 3306에 매핑되어 있으므로 직접 연결할 수 있습니다.그냥 터미널에서 실행해
mysql -h 127.0.0.1 -u root -p
주의: mysql 명령줄에 액세스할 수 있어야 합니다.mysql 명령에 오류가 표시되면 '/usr/local/mysql/bin' 기타 mysql 서버에 연결할 수 없음을 확인하십시오.즉, 머신에 mysql 클라이언트가 있어야 합니다.
내부 포트를 호스트에 3306으로 노출했으므로 {host ip:3306을 통해 MySQL에 연결합니다.MySQL CLI 툴에 액세스하려면docker exec -it mycontainer bash
호스트 os에 로컬로 설치되어 있지 않은 경우 MySQL과 함께 설치된 도구에 액세스할 수 있도록 컨테이너 내부에 배치됩니다.
언급URL : https://stackoverflow.com/questions/32360687/connect-to-docker-mysql-container-from-localhost
'programing' 카테고리의 다른 글
공식 PHP Docker 이미지 접근 방식을 사용하여 php-redis 확장을 설치하는 방법은 무엇입니까? (0) | 2022.12.29 |
---|---|
java.util을 저장합니다.밀리초의 정밀도로 MySQL DB의 날짜 (0) | 2022.12.29 |
범용 메서드를 사용하는 경우 및 와일드 카드를 사용하는 경우 (0) | 2022.12.29 |
.class용 Java 동기 블록 (0) | 2022.12.29 |
문자열 "XML safe"는 어떻게 만드나요? (0) | 2022.12.29 |