Skip to content

Instantly share code, notes, and snippets.

@peanutsando
Forked from honux77/mysql.md
Created July 21, 2017 04:07
Show Gist options
  • Save peanutsando/a3f1e4506e6954a1d503d88aa08f957f to your computer and use it in GitHub Desktop.
Save peanutsando/a3f1e4506e6954a1d503d88aa08f957f to your computer and use it in GitHub Desktop.
AWS ec2에 mysql 설치하기

MySQL Install

AWS 우분투 인스턴스 만들기

  • AWS로 ubuntu 16.04 시작
  • user-data를 넣어 보자
#!/bin/bash
mkdir /home/ubuntu/script/
cat <<'EOF' >> /home/ubuntu/script/slack.sh
#!/bin/bash
ip=`/usr/bin/curl -s -w '\n' http://169.254.169.254/latest/meta-data/public-ipv4`
instance=`/usr/bin/curl -s -w '\n' http://169.254.169.254/latest/meta-data/instance-id`
url=https://hooks.slack.com/services/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
name="ROCKMAN"
payload="{\"text\": \"`date`: $name  $instance  ($ip) started\"}"
/usr/bin/curl -X POST -H 'Content-type: application/json' \
	--data "$payload" $url
EOF

chmod +x /home/ubuntu/script/slack.sh
cat <<'EOF' >> /etc/systemd/system/slack.service
[Unit]
Description=Slack IP Notification
Wants=network-online.target
After=network-online.target
[Service]
Type=oneshot
WorkingDirectory=/home/ubuntu/script
ExecStart=/home/ubuntu/script/slack.sh
[Install]
WantedBy=multi-user.target
EOF

systemctl enable slack.service
systemctl status slack

/home/ubuntu/script/slack.sh
apt update; apt -y upgrade

최초 접속 후 우분투 패키지 업그레이드 및 한글 설정

$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install language-pack-ko
$ sudo locale-gen ko_KR.UTF-8

이어서 한글 설정

$ locale
$ sudo -i
$ cat << 'EOF' > /etc/default/locale
LANG="ko_KR.UTF-8"
LANGUAGE="ko_KR:ko:en_US:en"
EOF
  • bash 재시작 후 확인
$ locale

mysql 설치

  • 중간에 root password를 꼭 넣어주어야 합니다.
  • 패스워드를 잃어 버렸을 경우에는 그냥 새로 설치하는 게 빠름 (클라우드니까)
$ sudo apt install mysql-server
$ sudo service mysql start
$ sudo update-rc.d mysql defaults
$ mysql -u root -p
mysql> quit

utf-8 설정

  • 리눅스의 경우 초기 설정은 latin1으로 되어 있는 경우가 많다.
mysql> status
  • 한글 처리를 위해 utf8로 설정 바꾸기
$ sudo -i 
$ cat /etc/mysql/my.cnf
$ cat << 'EOF' > /etc/mysql/mysql.conf.d/utf8.cnf
# for utf8 characterset
[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

[mysqldump]
default-character-set = utf8

[mysql]
default-character-set = utf8
EOF

$ cat /etc/mysql/mysql.conf.d/utf8.cnf
# ctrl + d 로 root 로그아웃, 일반 사용자로 돌아옴 
$ sudo systemctl restart mysql 

일반사용자 외부 접속 허용

$ sudo -i
$ cd /etc/mysql
$ grep -r 'bind'
# bind-adress=127.0.0.1 내용 주석처리 (앞에 #을 붙임)
$ cd /etc/mysql/mysql.conf.d
$ sed -i 's/bind/# bind/' mysqld.cnf
$ cat mysqld.cnf | grep bind
$ sudo systemctl restart mysql
$ exit 
  • 주의: root 사용자의 외부 접속은 허용하면 안 됩니다.

재부팅시 mysqld 자동 실행

$ sudo update-rc.d mysql defaults
# 자동 실행 취소 명령 (참고용, 타이핑하지 마세요)
# sudo update-rc.d mysql remove  

데이터베이스 및 일반 사용자 생성

CREATE DATABASE mydb;
--- 아이디 및 패스워드 설정
CREATE USER 'myuserid'@'%' IDENTIFIED BY 'mypassword';
GRANT ALL ON mydb.* TO 'myuserid'@'%';
FLUSH PRIVILEGES;

mydb: 데이터베이스 이름 myuserid: 사용자 id mypassword: 사용자 패스워드

사용자 패스워드가 생각나지 않을 때

루트 사용자로 로그인 후 일반 사용자 패스워드는 쉽게 변경 가능

SET PASSWORD FOR 'honux'@'%'='new_password';
FLUSH PRIVILEGES;

security group 설정

  • mysql (inbound, 3306, any address) 로 허용해 줘야 합니다.

GUI 이용 접속

macOS

https://www.sequelpro.com/

windows

HeidiSQL http://www.heidisql.com/

참고자료

https://dev.mysql.com/doc/refman/5.7/en/

구글링 및 기억 속 어딘가

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment