[AWS] 10-1.EC2 MySql 설치
안녕하세요. 갓대희 입니다. 이번 포스팅은 [ [AWS] EC2에 MySql 설치하기 ] 입니다. : )
1. MySql 직접 설치
1. 설치 가능 여부 확인
sudo yum list mysql*
- yum list를 확인해보니 mysql server가 존재하지 않는다.
분명히 예전엔 yum 을 통해 설치가 가능했었던 것 같은데, 다른 방법을 통해 설치.
- 편의상 루트 계정으로 전환하여 설치 시작.
sudo su
2. 최신 버전 MySql 다운로드 및 설치
- 현재 시점에서, 최신 mysql 버전 확인
https://dev.mysql.com/downloads/repo/yum/
- 다음 명령어로 현재 나의 linux 환경에 맞는 버전 다운로드 및 설치
wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
yum localinstall mysql80-community-release-el7-3.noarch.rpm
(또는)
yum localinstall https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
- 완료 후 다음 명령어를 통해 설치
yum install mysql-community-server
3. mysql 실행 및 상태 확인
sudo systemctl start mysqld
sudo systemctl status mysqld
- 정상적으로 실행 된 것을 볼 수 있다.
4. characterset 설정
- 나중에 어차피 하게될 characterset 설정을 먼저 하고 넘어 가도록 하자.
vim /etc/my.cnf
- 가장 마지막 부분에 다음 내용을 추가해 주자.
[mysqld]
... 중략
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
skip-character-set-client-handshake
- 변경된 설정을 적용하기위해, 재시작 하여 주자.
systemctl restart mysqld
※ 참고
▶ utf8mb4 - UTF-8 인코딩은 4Byte 가변 길이 인코딩 방식이다. - 그런데 MySQL은 utf8을 3Byte로 구현했었고, 이후 utf8mb4(4Byte character set)을 추가했다. - MySQL 5.5, MariaDB 5.5 이후 버전에서만 사용할 수 있다.
5. root 비밀번호 찾기
- MySQL을 설치하면 임시비밀번호가 log에 찍혀 있기 때문에, log를 통해 root 비밀번호를 알아내자.
cat /var/log/mysqld.log | grep 'temporary password'
- root@localhost: 뒤에 있는 것이 비밀번호다.
6. 접속 및 비밀번호 변경
- 다음 명령어를 통해 접속 및 비밀번호 입력
mysql -u root -p
- 정상적으로 MySql접속 하였다면, root 비밀번호를 변경하여 주자.
mysql> alter user 'root'@'localhost' identified with mysql_native_password by '원하는비밀번호';
- 현재까지 설정 정보(캐릭터 셋 등) 확인
7. EC2 보안 그룹(규칙) 설정
- 본인의 보안 그룹 설정 창으로 이동 하자.
- 인바운드 규칙 설정에 > 사용자 지정 TCP IP > 3306 포트 > 위치 무관으로 설정
8. Database 및 계정 생성
- User 생성
CREATE USER '아이디'@'로컬/외부 접속' IDENTIFIED BY '비밀번호';
- Database생성
CREATE DATABASE 데이터베이스명;
- 권한 부여
GRANT ALL PRIVILEGES ON *.* to 'User명'@'%';
- 변경내용 적용
FLUSH PRIVILEGES;
- cnf 파일 수정 및 재시작
vim /etc/my.cnf
... 중략
bind-address=0.0.0.0
systemctl restart mysqld
※ 참고
- Ubuntu 계열: /etc/mysql/mysql.conf.d/mysqld.cnf - 아마존 리눅스 등 CentOS 계열: /etc/my.cnf - 사실 보안을 위해 SSH 터널링을 활용, pem 키를 사용하여 접속하도록 하는게 안전하다.
9. 외부 접속 툴을 통한 접속 테스트
- dbever
- 정상적으로 접속되는 것을 볼 수 있다.