Docker M1 MySQL 설치
local에서 docker를 이용해서 mysql 를 셋팅하는 방법에 대해서 알아보자.
Docker MySQL 실행
docker pull --platform linux/amd64 mysql:8.0.28
docker pull
명령어는 mysql:8.0.28 버전대의 image를 docker hub에서 pull 받겠다는 의미- m1 macbook 인 경우에는
--platform linux/amd64
를 지정해야 한다.
docker run --platform linux/amd64 --name mysql -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=1234 mysql:8.0.28
docker run
명령어는 컨테이너를 만들고(create), 컨터이너를 실행한다(start)- m1 macbook 인 경우에는
--platform linux/amd64
를 지정해야 한다. - –name 옵션: 컨테이너의 이름을 지정한다.
- 이름이 중복되면 conflict 난다.
- 실행중인 컨테이너의 정보를 보려면
docker ps -a
커맨드를 통해서 확인가능하다.
- -d 옵션: background에서 동작
- -p 옵션: port 매핑
- -e 옵션: environment 환경 설정 key, value 형태로 보낸다.
- MYSQL 접속 : root / 1234
docker exec -it mysql bash
docker exec
명령어는 실행중인 컨테이너(여기에서는 mysql 컨테이너)에, 그 뒤에 오는 명령어를 실행한다.- -i 옵션: STDIN 표준 입출력을 열고
- -t 옵션: 가상 tty(pseudo-TTY)를 통해서 접속하겠다는 의미
한글 인코딩 설정
root@32f08c0def9e:/# vi /etc/mysql/my.cnf
- 컨테이너로 접속한다.
-
vi /etc/mysq/my.cnf 파일을 수정한다.
- 다음과 같은 내용을 추가한다.
[client]
default-character-set = utf8
[mysqld]
init_connect = "SET collation_connection = utf8_general_ci"
init_connect = "SET NAMES utf8"
character-set-server = utf8
collation-server = utf8_general_ci
[mysql]
default-character-set = utf8
참고로, docker container에서 vim설치가 안되어있다면 다음 명령어를 통해서 vim을 설치한다.
$ apt-get update
$ apt-get install vim
mysql에 직접 접속해서 character_set을 확인하면 utf8로 변경된것을 확인할 수 있다.
mysql -uroot -p1234
mysql> show variables like 'c%';
+----------------------------------------------+--------------------------------+
| Variable_name | Value |
+----------------------------------------------+--------------------------------+
| caching_sha2_password_auto_generate_rsa_keys | ON |
| caching_sha2_password_digest_rounds | 5000 |
| caching_sha2_password_private_key_path | private_key.pem |
| caching_sha2_password_public_key_path | public_key.pem |
| character_set_client | utf8mb3 |
| character_set_connection | utf8mb3 |
| character_set_database | utf8mb4 |
| character_set_filesystem | binary |
| character_set_results | utf8mb3 |
| character_set_server | utf8mb4 |
| character_set_system | utf8mb3 |
| character_sets_dir | /usr/share/mysql-8.0/charsets/ |
| check_proxy_users | OFF |
| collation_connection | utf8_general_ci |
| collation_database | utf8mb4_0900_ai_ci |
| collation_server | utf8mb4_0900_ai_ci |
| completion_type | NO_CHAIN |
| concurrent_insert | AUTO |
| connect_timeout | 10 |
| connection_memory_chunk_size | 8912 |
| connection_memory_limit | 18446744073709551615 |
| core_file | OFF |
| create_admin_listener_thread | OFF |
| cte_max_recursion_depth | 1000 |
+----------------------------------------------+--------------------------------+
24 rows in set (0.03 sec)
docker restart mysql
를 통해서 재시작한다