목차

MySQL Install / 설치

Docker

local 환경에서 간단히 테스트 하려면 다음과 같이 docker로 설치해도 된다.

MySQL :: MySQL 5.7 Reference Manual :: 2.5.7.2 More Topics on Deploying MySQL Server with Docker

docker run --name mysql8 \
    -p 3306:3306 \
    -e LANG=C.UTF-8 \
    -e MYSQL_ROOT_PASSWORD=root \
    -e MYSQL_ROOT_HOST='%' \
    -e TZ='Asia/Seoul' \
    --restart=unless-stopped \
    -d \
    mysql/mysql-server:8.0 \
    --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci \
    --general-log=true --slow-query-log=true --log-output=TABLE \
    --default-authentication-plugin=mysql_native_password
# 아래 명령으로 접속 가능. 비밀번호 root
mysql --protocol=tcp -hlocalhost -P3306 -uroot -p
 
# UTF8MB4 로 커넥션 캐릭터셋 변경
mysql> set CHARACTER SET UTF8MB4;

기타 Docker Option

client 실행

docker exec -it mysql8 mysql -uroot -p

docker-compose

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
command: ["--sql_mode=''", "--character-set-server=utf8mb4", "--collation-server=utf8mb4_unicode_ci"]

Ubuntu MySQL 보안 설정

Ubuntu 16.04 / Xenial MySQL 5.7 root 계정

sudo mysql -uroot -p
 
# MySQL client에서
# 일단 현재 상태 확인
SELECT * FROM mysql.user where user='root' \G
 
# 일반 계정형태로 변경
GRANT ALL PRIVILEGES on *.* to 'root'@'localhost' IDENTIFIED BY '<password>'; # 원하는 비밀번호
UPDATE mysql.user SET plugin = 'mysql_native_password' WHERE user = 'root' AND plugin = 'auth_socket';

RPM/Fedora

Debian/Ubuntu

Debin/Ubuntu Manual Install

MySQL Multiple Instance / 한 서버에 여러 MySQL 띄우기 참조

mysqld_multi를 이용한 다중 서버 띄우기

자동시작

ubuntu의 경우 /etc/rc.local에 다음을 넣어둔다.

/usr/bin/mysqld_multi start 3307

Ubuntu apparmor로 인해 mysqld가 접근하는 데이터 경로를 변경할 수 없을 때

sudo touch /etc/apparmor.d/disable/usr.sbin.mysqld
sudo service apparmor reload