설치방법
도커 docker 설치
설치 후 컴퓨터 재부팅 필요하다. 프로그램 실행 시키면, 자동으로 환경세팅 해준다.
docker로 Mariadb 설치하기
cmd → `docker pull mariadb` : docker가 가지고 있는 mariadb 설치 정보를 컴퓨터로 가져온다.
→ `docker run --name mariadb -d -p 3306:3306 --restart=always -e MYSQL_ROOT_PASSWORD=root mariadb` : 도커 컨테이너를 실행 run에 올려놓고, 이름 지어주고, 포트번호 할당하는 것이다. 해당 컨테이너의 password 비밀번호도 지정해준다. 기본적으로 root가 많이 사용된다
이때, pc에 원래 돌아가는 프로세스가 있을 경우 에러가 발생할 수 있다. (oracle, mysql 등등)
아래 해결방법이 있다!
`docker ps -a`로 docker 컨테이터 상태를 확인할 수 있다. 아무것도 없으면, 제대로 올라오지 않은 것이다.
`docker exec -it mariadb /bin/bash` : mariadb가 있는 컨테이너에 접속한다.
mysql -u root -p mariadb -u root -p → mariadb 실행한다.
많은 설치법 글에 mysql이라고 적혀있을텐데, MariaDB 서버 11.0 부터는 mariadbd이다.
자세한 설명은 에러 해결방법을 참고한다.
pw : root
🔥설치 문제점
포트넘버 할당할때 발생하는 에러 해결
docker: Error response from daemon: Ports are not available: exposing port TCP 0.0.0.0:3306 -> 0.0.0.0:0: listen tcp 0.0.0.0:3306: bind: Only one usage of each socket address (protocol/network address/port) is normally permitted.
3306 포트가 이미 사용중이라서 발생하는 충돌이다.
3306 포트가 어디에서 사용중인지 확인해보니
C:\Users\dh010>netstat -ano | findstr 3306
TCP 0.0.0.0:3306 0.0.0.0:0 LISTENING 7572
TCP 0.0.0.0:33060 0.0.0.0:0 LISTENING 7572
TCP [::]:3306 [::]:0 LISTENING 7572
TCP [::]:33060 [::]:0 LISTENING 7572
PID 7572 인 프로세스가 3306 포트를 점유중인 것 을 확인할 수 있다.
PID 7572가 어던 프로세스인지 확인하기 위해
C:\Users\dh010>tasklist | findstr 7572
mysqld.exe 7572 Services 0 171,348 K
이전에 설치한 mysql이 이미 3306 포트를 점유중인 것을 확인하였다.
해결방법으로 mysql 프로세스를 종료하고 docker 컨테이너를 실행하거나, docker을 3306이 아닌, 다른 포트 넘버에 할당하는 방법이다.
taskkill 작업을 하려면, 관리자모드로 cmd를 실행해야한다.
C:\Windows\System32>taskkill /pid 7572 /f
성공: 프로세스(PID 7572)가 종료되었습니다.
앞서 docker 생성 명령어를 다시 사용하려고 했을때, 이미 있는 이름이라고 에러가 발생한다.
재삭제하고 다시 생성했다.
C:\Windows\System32>docker rm mariadb
mariadb
C:\Windows\System32>docker pull mariadb
C:\Windows\System32>docker run --name mariadb -d -p 3306:3306 --restart=always -e MYSQL_ROOT_PASSWORD=root mariadb
에러 없이 다시 생성이 잘 되고! 포트 넘버를 확인하면
docker 새로운게 잘 할당된 것을 확인할 수 있다!
휴...
# 참고 : MySQL과 Mariadb port 겹침 에러 - Port are not avilable
mariadb에 접속하는 명령어 작성할때, mysql 에러 해결
docker exec -it mariadb /bin/bash
root@<컨테이너id>: /# mysql -u root -p
bash: mysql: command not found
해결하느라 세시간 넘게 붙잡고있었다....
해결은 `mysql -u root -p`가 아니라, `mariadb -u root -p`로 작성을 해야했던것..
찾아보니, MariaDB 서버 11.0 부터는 mysql이 아닌, mariadb로 명령어가 변경되었다고 한다.
나는 그것도 모르고.. 내 컴퓨터의 sql 세팅이 잘못된줄알고 재설치까지 할 뻔했다... 다행😢
# 참고 : Docker로 MariaDB 설치 이슈