docker로 각기 다른 포트의 mysql를 띄우고 싶었다.
어찌어찌 띄우는 건 성공했는데, DBeaver에서 접속하려고 하니 에러가 발생했다.
울지말고 확인해보자..
Version
Version | |
OS | mac m1 |
Docker | 25.0.3 |
Docker Desktop | 4.27.2 (137060) |
Mysql | 8.3.0 |
DBeaver | 23.3.4. |
ERROR
Expected to read 4 bytes, read 0 bytes before connection was unexpectedly lost.
Mysql의 Global Port를 확인해 보자
확인 방법
1. mysql DB 접속
터미널에서 아래 명령어를 입력하면 mysql DB에 접속할 수 있다.
docker exec -it {컨테이너명} mysql -u root -p
E.g) docker exec -it mysql-stg mysql -u root -p
Enter password : 비밀번호 입력
아래와 같은 화면이 뜨면 DB에 접속된 것이다.
2. 쿼리 실행
아래 쿼리 실행하면 된다.
show global variables like ‘PORT’;
컨테이너는 3307로 띄웠지만, mysql 설정을 변경해주지 않아 기본 포트인 3306으로 바라보고 있었던 것이다.
해결방법
1. /etc/my.cnf 수정
Docker Desktop에서 컨테이너 클릭 > Files 탭
/etc/my.cnf 파일 선택 후 'Open file editor’ 클릭
아래와 같이 port 설정 > 저장
2. 재기동
3. 변경 포트 확인
Mysql DB 접속해서 변경된 포트 확인해 보면 다음과 같이 3307로 변경되었다.
4. DBeaver - Mysql 연결
나는 로컬 환경이라 port만 3307로 변경해 줬다.
4-1. 정상적으로 연결된 경우
4-2. 또 다른 에러가 발생한 경우 (Public Key Retrieval is not allowed)
Edit Connection > Driver properties 탭 > allowPublicKeyRetrieval을 TURE로 변경(default : false)
🪓 삽질
my.cnf 파일 수정해야 하는데 컨테이너 내부에는 vi 설치가 안되어 있어서 이것저것 삽질을 했다.
구글링 해보니 Docker Desktop에서 바로 파일을 수정할 수 있었음 ^^;
나는 4.1x.x 버전을 사용하고 있었고, 해당 버전에는 Files 탭이 없길래 4.27.x로 업그레이드했더니 바-로 수정되었다.
참고 블로그
댓글