기타/클라우드

Docker에 MariaDB설치하기 + 에러 해결법(MySQL과 Mariadb port 겹침 에러 - Ports are not available)

둥굴둥굴둥굴레차 2021. 7. 14. 00:50

 

 

1. 마리아 DB 이미지를 아래 명령어로 다운 받자.

docker pull mariadb

 

 

2. 마리아 DB를 컨테이너에 추가 및 구동해보자.

docker container run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=1234 --name mariadb mariadb
  • -e MYSQL_ROOT_PASSWORD=1234 : root계정의 pw를 1234로 지정.
  • --name mariadb : 컨테이너 이름을 mariadb라 지정
  • mariadb : 다운로드 받은 이미지의 이름

 

 

 

하지만 다음의 에러를 뱉었다.

docker: Error response from daemon: Ports are not available: 
listen tcp 0.0.0.0:3306: bind: Only one usage of each socket address 
(protocol/network address/port) is normally permitted.

 

구글링 해보니, window상에서 돌아가고 있는 MYSQL과 포트가 겹치기 때문이라고 한다.

 

 

 


 

MySQL과 Mariadb port겹칠 때 해결법

1. win키 + r로 실행창을 열고 services.msc라고 입력하면 다음의 창이 뜬다.

 

2. 우클릭하여 속성에 들어가면 다음과 같은 화면을 볼 수 있다.

 

3. 시작유형을 수동으로 바꾸어 주자.

컴퓨터 부팅 시 자동으로 MYSQL이 실행되지 않도록 설정해주는 것이다!

 

 

 

이제 내가 MYSQL을 수동으로 구동하지 않는 이상 MYSQL이 스스로 실행되는 일은 없다.

따라서 Mariadb와 port가 겹치는 것도 신경쓰지 않아도 된다!

 

아님 그냥 MYSQL자체를 uninstall하는 방법도 좋다.

 


 

 

그 다음 다시 2번의 명령어를 입력하니 또 다음의 에러를 볼 수 있었다.

이전에 만들려 시도했다가 실패한 컨테이너와 지금 내가 만드려는 컨테이너 사이에서 충돌이 일어난 것이다.

docker: Error response from daemon: Conflict. The container name "/mariadb" is already in use by container "44e9379dbfd8a35b26ea06347b3b6db3214fd5f64f8555f1e661aff22caca7a1". You have to remove (or rename) that container to be able to reuse that name.

 

 

이전에 만들려고 시도했던 컨테이너를 아래의 명령어로 삭제해주자.

# 2번에서 설정한 컨테이너 이름에 따라 rm 다음의 명령어가 달라진다.
# 즉, mariadb는 내가 2번에서 컨테이너 추가시 mariadb라고 만든 "컨테이너의 이름"
docker rm mariadb

 

이제 다시 처음으로 돌아가 1번과 2번 과정을 완료했다.

 

 

3. MariaDB 접속

docker exec -it mariadb /bin/bash
mysql -u root -p

 

여기까지 명령어를 입력하면 password를 입력하라고 한다.

2번에서 지정해주었던 비밀번호를 입력하면 된다. 

나의 경우 1234

 

 

그러면 다음과 같이 환영해준다.

Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 3
Server version: 10.5.11-MariaDB-1:10.5.11+maria~focal mariadb.org binary distribution

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

 

 

4. Mariadb에 user를 등록해주자.

 create user 'suzy'@'%' identified by '1234';
 grant all privileges on test.* to 'suzy'@'%';
flush privileges;
show databases;

 

 

 

 

[참고] Mariadb가 실행중인지 확인할 수 있는 명령어

docker ps -a

 


 

🧐 의문점

Mariadb를 설치하긴 했는데..docker를 통해 설치해서 그런지 

파일경로가 어떻게 되는지.. 음 잘 모르겠다.

 

 

아래 명령어를 통해 mariadb 설치 경로를 알 수 있다고 해서 해봤는데,

show variables like 'datadir';

 

다음의 결과값을 얻을 수 있었다.

봐도 잘 모르겠다. 앞부분이 생략되서...

+---------------+-----------------+
| Variable_name | Value           |
+---------------+-----------------+
| datadir       | /var/lib/mysql/ |
+---------------+-----------------+

 

 


 

 

🔽 Reference

 

[Docker] MariaDB 설치하기

오늘은 Docker에 MariaDB를 설치해본다. 그리고 오늘도 30분 만에 끝났다. Docker는 미쳤어 1. MariaDB 이미지 다운로드 윈도우 CMD 창을 연다. 아래 커맨드로 이미지를 다운로드한다. 1 docker pull mariadb c..

logical-code.tistory.com

 

윈도우10 도커에 마리아디비 설치, Install MariaDb on Docker Windows 10

윈도우의 도커에 마리아디비를 설치해보겠습니다. 이제 개발용 서버 프로그램들을 도커에 설치해주면 각질이 넘쳐나는 하드디스크를 사용하지 않아도 됩니다. 깨끗한 컴퓨터를 사용할 수 있는

blog.nachal.com