localhost에서 docker 네트워크에서 실행 중인 docker 컨테이너에 연결하는 방법
<p>다음과 같이 docker를 사용하여 작성된 mysql docker 컨테이너가 있습니다.</p>
<pre class="brush:php;toolbar:false;">버전: "3.3"
서비스:
DB 서버:
컨테이너_이름: 데이터베이스
이미지: mysql:최신
짓다:
도커파일: ./Dockerfile
환경:
MYSQL_ROOT_PASSWORD: 루트테스트
MYSQL_USER: 소말리아
MYSQL_PASSWORD: 사용자 테스트
포트:
- "3031:3306"
네트워크:
- 내부
볼륨:
- mysql:/var/lib/mysql
- ./init.sql:/docker-entrypoint-initdb.d/init.sql:ro
다시 시작: 멈추지 않는 한
네트워크:
내부:
드라이버: 브릿지
볼륨:
mysql:</pre>
<p>올바른 비밀번호로 localhost:3031에 연결했지만 다음 오류가 발생했습니다. </p>
<pre class="lang-bash Prettyprint-override"><code>사용자 'root'@'172.19.0.1'에 대한 액세스가 거부되었습니다(비밀번호 사용: YES).
<p>이 오류를 해결하려면 어떻게 해야 합니까? 동일한 내부 네트워크에 있는 다른 컨테이너도 데이터베이스에 연결할 수 없습니다.
여기에 Dockerfile의 내용을 제공합니다:
<pre class="brush:php;toolbar:false;">init.sql init.sql 추가</pre>
<p>init의 내용을 전달했습니다. SQL은 여기에 있습니다:</p>
<pre class="brush:php;toolbar:false;">리뷰가 없는 경우 데이터베이스를 생성합니다.
사용자가 존재하지 않는 경우 데이터베이스를 생성합니다.
공급업체가 존재하지 않는 경우 데이터베이스를 생성합니다.
리뷰에 대한 모든 권한을 부여합니다.* to 'soumalya'@'%';
사용자*에 대한 모든 권한을 'soumalya'@'%'에 부여합니다.
Vendors.*에 대한 모든 권한을 'soumalya'@'%';</pre>
<p>컨테이너 로그를 보면 데이터베이스가 시작되어 포트 3306에서 들어오는 연결을 기다리고 있는 것을 볼 수 있습니다. </p>