1) MySQL 환경 설정 방법
MySQL 컨테이너 내의 data 디렉토리와 my.cnf 설정 파일을 호스트 서버로 복사해오면 데이터 및 설정 관리가 수월해 집니다.
컨테이너가 구동중인 상태에서 아래와 같이 파일을 복사 합니다.
mysql 컨테이너의 /var/lib/mysql 디렉토리를 /home/vittorio/mysql/data 디렉토리로 복사
# mkdir /home/vittorio/mysql # docker cp mysql:/var/lib/mysql/ /home/vittorio/mysql/ Successfully copied 206.5MB to /home/vittorio/mysql/ # mv /home/vittorio/mysql/mysql /home/vittorio/mysql/data |
mysql 컨테이너의 my.cnf 파일을 /home/vittorio/mysql/conf/my.cnf 로 복사
# mkdir /home/vittorio/mysql/conf # docker cp mysql:/etc/my.cnf /home/vittorio/mysql/conf/my.cnf Successfully copied 3.072kB to /home/vittorio/mysql/conf/my.cnf |
호스트 서버에서 변경사항을 적용할 수 있도록 docker-compose.yml 파일을 수정합니다.
# vi docker-compose.yml ... mysql: image: mysql:8.0.31 container_name: mysql restart: unless-stopped tty: true ports: - "3306:3306" environment: MYSQL_HOST: localhost MYSQL_ROOT_PASSWORD: 12345678 # 초기 mysql root 비밀번호 SERVICE_TAGS: dev SERVICE_NAME: mysql TZ: Asia/Seoul volumes: - /home/vittorio/mysql/data/:/var/lib/mysql/ - /home/vittorio/mysql/conf/my.cnf:/etc/my.cnf ... |
변경된 컨테이너를 적용합니다.
# docker compose stop mysql # docker rm -v mysql # docker compose up -d mysql |
my.cnf 변경사항이 잘 적용되는지 확인해 봅니다.
# vi /home/vittorio/mysql/conf/my.cnf [mysqld] max_connections = 10000 # docker compose restart mysq |
MySQL 에 접근하여 변경된 값을 확인합니다.
# docker exec -it mysql /bin/bash bash-4.4# mysql -u root -p Enter password: (docker-compose.yml 에서 설정한 root 비밀번호 입력) |
mysql> show variables like 'max_connections'; +-----------------+-------+ | Variable_name | Value | +-----------------+-------+ | max_connections | 10000 | +-----------------+-------+ 1 row in set (0.00 sec) |
2) DB, 사용자 계정 생성
MySQL 에 접근하여 DB, 사용자 계정 생성 및 권한을 할당 합니다.
(암호화 방식은 기본값인 caching_sha2_password 로 정함)
# docker exec -it mysql /bin/bash bash-4.4# mysql -u root -p Enter password: (docker-compose.yml 에서 설정한 root 비밀번호 입력) |
mysql> create databases vittoriodb; mysql> create user 'vittorio'@'localhost' identified with caching_sha2_password by '12345678'; mysql> grant all privileges on vittoriodb.* to 'vittorio'@'localhost'; mysql> grant grant option on vittoriodb.* to 'vittorio'@'localhost'; mysql> flush privileges; |
컨테이너 밖에서 접근을 하면 (호스트 서버 또는 다른 컨테이너) 외부 IP 에서 접근한 것으로 간주하기 때문에
접근 호스트명만 바꿔서 동일한 계정으로 추가 생성 해줍니다.
mysql> create user 'vittorio'@'%' identified with caching_sha2_password by '12345678'; mysql> grant all privileges on vittoriodb.* to 'vittorio'@'%'; mysql> grant grant option on vittoriodb.* to 'vittorio'@'%'; mysql> flush privileges; |
3) MySQL root 패스워드 변경
추후 MySQL root 패스워드를 변경하고자 할 경우 mysql 로그인 후 아래와 같이 쿼리를 실행하면 됩니다.
mysql> use mysql; mysql> alter user root@localhost identified by 'NEWPASSWD'; mysql> alter user root@'%' identified by 'NEWPASSWD'; mysql> flush privileges; |
4) data dump 방법
DB 를 운영하면서 백업은 필수 진행해야 합니다.
호스트 서버의 data 디렉토리를 압축해도 되지만, mysqldump 명령으로 백업하고자 할때는
아래와 같이 실행하여 간단히 백업을 할 수 있습니다.
# docker exec mysql /usr/bin/mysqldump -u root -p12345678 vittoriodb > vittoriodb.sql |
'Linux&Ubuntu > Docker&kuber' 카테고리의 다른 글
Docker Portainer 설치 (0) | 2023.09.18 |
---|---|
docker php 설정하기 (0) | 2023.09.18 |
docker apm+ssl 인증서 (0) | 2023.09.14 |
docker-compose 로 apm 기본 설치 (0) | 2023.09.14 |
Cronjob 사용하기 (0) | 2023.09.13 |