사용자 도구

사이트 도구


database:mysql:install

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
database:mysql:install [2018/11/13 10:01]
kwon37xi
database:mysql:install [2024/02/07 13:45] (현재)
kwon37xi
줄 6: 줄 6:
 local 환경에서 간단히 테스트 하려면 다음과 같이 docker로 설치해도 된다. local 환경에서 간단히 테스트 하려면 다음과 같이 docker로 설치해도 된다.
  
-  * [[https://hub.docker.com/_/mysql/|Mysql Docker 기본 제공]] +  * [[https://hub.docker.com/_/mysql/|Mysql Docker 기본 제공]] - 2021현재 ''amd64''만 제공함. 
-  * [[https://hub.docker.com/r/mysql/mysql-server/| MySql Server Docker Oracle 제공]]+  * [[https://hub.docker.com/r/mysql/mysql-server/| MySql Server Docker Oracle 제공]] - 8.x 부터 ''arm64/v8'' 함께 제공 
 +  * [[database:mariadb|MariaDB]] [[https://hub.docker.com/_/mariadb|mariadb docker Image]] 는 ''amd64'', ''arm64/v8'' 모두 제공. 호환성 목록을 보고서 mariadb 이미지를 대신 사용해도 됨.
  
 [[https://dev.mysql.com/doc/refman/5.7/en/docker-mysql-more-topics.html|MySQL :: MySQL 5.7 Reference Manual :: 2.5.7.2 More  [[https://dev.mysql.com/doc/refman/5.7/en/docker-mysql-more-topics.html|MySQL :: MySQL 5.7 Reference Manual :: 2.5.7.2 More 
줄 13: 줄 14:
  
 <code sh> <code sh>
-docker run --name mysql57 \+docker run --name mysql8 \
     -p 3306:3306 \     -p 3306:3306 \
 +    -e LANG=C.UTF-8 \
     -e MYSQL_ROOT_PASSWORD=root \     -e MYSQL_ROOT_PASSWORD=root \
     -e MYSQL_ROOT_HOST='%' \     -e MYSQL_ROOT_HOST='%' \
줄 20: 줄 22:
     --restart=unless-stopped \     --restart=unless-stopped \
     -d \     -d \
-    mysql/mysql-server:5.\+    mysql/mysql-server:8.\
     --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci \     --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci \
-    --general-log=true --slow-query-log=true --log-output=TABLE +    --general-log=true --slow-query-log=true --log-output=TABLE \ 
- +    --default-authentication-plugin=mysql_native_password
---log-output=TABLE 일 실제 운영환경에서는 사용금지+
 </code> </code>
 +  * ''%%--log-output=TABLE%%'' 는 테이블에 모든 로그를 남김. 실제 운영환경에서는 사용금지
 +  * ''%%--default-authentication-plugin=mysql_native_password%%'' : mysql 8 에서  암호화안된 접속 방식으로 비번 인증
 +  * ''%%-e LANG=C.UTF-8%%'' 가 있어야 한글 입력이 가능해짐.
  
 <code sh> <code sh>
줄 46: 줄 50:
 ==== client 실행 ==== ==== client 실행 ====
 <code sh> <code sh>
-docker exec -it mysql57 mysql -uroot -p+docker exec -it mysql8 mysql -uroot -p
 </code> </code>
  
 +==== docker-compose ====
 +<code>
 +version: "3"
 +
 +services:
 +  mysql57:
 +    container_name: mysql57
 +    image: mysql/mysql-server:5.7
 +    ports:
 +      - "3306:3306"
 +    environment:
 +      - MYSQL_ROOT_PASSWORD=root
 +      - MYSQL_ROOT_HOST=%
 +      - TZ=Asia/Seoul
 +    command: --sql_mode='' --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
 +    volumes:
 +      - ./init-mysql.sql:/docker-entrypoint-initdb.d/0_init.sql
 +</code>
 +  * ''docker-compose.yml''과 동일 디렉토리에 ''init-mysql.sql''을 두고 거기에 초기화 SQL script 를 지정한다.
 +  * ''command'' 항목에는 ''mysqld''를 넣어도 되긴하지만 넣지 말고, ''mysqld''에 지정할 옵션들을 나열해주기만 해도 된다.
 +
 +<code>
 +command: ["--sql_mode=''", "--character-set-server=utf8mb4", "--collation-server=utf8mb4_unicode_ci"]
 +</code>
 +  * ''MYSQL_DATABASE=newdb'' 로 기본으로 database 를 생성할 수는 있으나, 여러 database 를 생성할 수는 없는 것으로 보임.
 +  * ''MYSQL_USER'', ''MYSQL_PASSWORD'' 로 일반 사용자 DB 계정 추가 가능
 +  * ''/docker-entrypoint-initdb.d'' 디렉토리 하위에 있는 ''*.sql'',''*.sh'' 등이 자동 실행된다.
 ===== Ubuntu MySQL 보안 설정 ===== ===== Ubuntu MySQL 보안 설정 =====
   * ''sudo mysql_secure_installation'' 사용하여 보안 관련 기본 설정을 해준다.   * ''sudo mysql_secure_installation'' 사용하여 보안 관련 기본 설정을 해준다.
database/mysql/install.1542070912.txt.gz · 마지막으로 수정됨: 2018/11/13 10:01 저자 kwon37xi