반응형
첫 사이드 프로젝트로 개발 공부에 목적이 크기 떄문에 EC2:Ubuntu에 docker에 mysql, redis 같이 올리려고 한다.
Docker 공식 홈페이지에 있는 Ubuntu 설치하기를 보고 했다.
이후 도커에서 MySQL이랑 Redis를 띄우려고 한다..!
docker daemon이 실행되지 않아서 실행해 줬다.
sudo systemctl enable docker
MySQL port인 3306을 인바운드 규칙에 수정해두었다.
아직 docker에 정말 이미지 컨테이너 기본만 알고 있는 상태라서 다음에 공부를 따로 해야될거 같다...!
도커에서는 암시적 볼륨과 명시적 볼륨이 존재한다고 한다.
# volume 생성
sudo docker volume create mysql-volume
# volume 확인
sudo docker volume ls
암시적 볼륨의 경우 컨테이너가 삭제되면 같이 삭제되기 때문에 명시적 볼륨을 생성해서 마운팅을 해주면 영구적으로 데이터 보존이 가능하다고 한다.
# 생성한 volume을 컨테이너에 마운팅하여 실행한다.
sudo docker run -d --name mysql-container -p 3306:3306 -v mysql-volume:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=1234 mysql:latest
--name : mysql-container라는 이름의 컨테이너 새엇ㅇ
-p : 호스트의 3306 포트를 컨테이너의 3306 포트와 포트포워딩
-v : 호스트의 mysql-volume의 volume을 컨테이너의 /var/lib/mysql volume을 마운팅
# mysql -u root -p 이후 password 값
-e : MYSQL_ROOT_PASSWORD 환경변수 값을 '1234'로 지정
-d : daemon으로 실행
생성된 컨테이너에 bash 쉘로 접속
sudo docker exec -it mysql-container bash
MySQL 서버에 접속
mysql -u root -p
# 컨테이너 생성 시 입력했던 패스워드 입력
Enter password:
root 계정으로 접속이후, 새로운 user 만들기
# USER 생성, '%'는 모든 IP에서 접속 가능
mysql> CREATE USER uhanuu@'%' identified by '1234';
# 생성한 USER에 GRANT 명령으로 모든 권한 부여
mysql> GRANT ALL PRIVILEGES ON *.* to uhanuu@'%';
# 변경 사항 적용
mysql> FLUSH PRIVILEGES;
mysql> exit;
# 이후 생성한 user로 MySQL 서버 접속
connection이 실패해서 찾아보니까 데이터베이스 권한도 부여해야되는거 같았다. (즉 내가 임의로 만든 project)
ㅠㅠ uhanuu 사용자에 권한을 부여해서 되는줄 알았는데
mysql> grant all privileges on project.* to 'uhanuu'@'%';
ERROR 1044 (42000): Access denied for user 'uhanuu'@'%' to database 'project'
다시 root 계정으로 돌아가서 명령어를 수행하자
mysql> grant all privileges on project.* to 'uhanuu'@'%';
mysql> flush privileges;
# 해당 사용자에 대한 권한을 보여줌
mysql> show grants for 'uhanuu'@'%';
connection이 안된 이유는... 외부 접속 설정을 따로 하지 않았던 것이었다....
MySQL 외부 접속 설정
MySQL 설정 파일의 위치는 /etc/mysql/mysql.conf.d
mysql --help | grep "mysql.cnf.d"
$ cd /etc/mysql/mysql.conf.d
$ sudo vim mysqld.cnf
bind-address 부분을 0.0.0.0으로 설정을 해서 외부 접속을 허용해 주면 된다.
$ sudo service mysql restart
포트 포워딩을 마쳤으면 MySQL을 재시작해준다.
반응형
'클라우드' 카테고리의 다른 글
Jenkins를 통한 CI/CD 구축 (0) | 2023.09.07 |
---|---|
AWS/EC2 Redis 설정하기 (2) | 2023.05.16 |
AWS/EC2 Spring Boot 오류들... (0) | 2023.05.15 |