다가오는 다음을 향해

[AWS ubuntu] AWS EC2 MySQL sever설치 및 Workbench 연결 본문

Server/AWS

[AWS ubuntu] AWS EC2 MySQL sever설치 및 Workbench 연결

hyeseo 2022. 8. 22. 16:51

▼ 개발환경

더보기

MacBook Pro M1 

Springboot
[ IDE ] ]IntelliJ IDEA (Ultimate Apple Silicon 2022-02])

[ Spring ] springboot 2.7.1(springframework - 5.3.21)

[ Java ] java-1.8(openjkd 1.8.0_342)

[ Build Tool] Maven 3.3.2

[ WAS ] Tomcat (Apache Tomcat-9.0.64)
[ RDBS ] MySql - 8.0.30

[ Lombok ] 1.18.24

[ mybatis ] 2.1.3

 

사전준비


EC2 인스턴스 생성(ubuntu)

EC2 인스턴스 생성

 

 

 

인바운드 규칙 추가 (포트번호 : 3306)


왼쪽 상단 [인바운드 규칙 편집] 버튼을 클릭합니다.

사용자지정 TCP , 3306 포트를 위치 무관으로 설정합니다.

 

[인바운드 규칙 추가된 화면]

 

인스턴스를 재부팅 합니다.

 

 

 

MySql Server 설치 (ubuntu)


// 패키지 인덱스 정보 업데이트를 합니다.
sudo apt-get update

// 설치된 패키지를 업그레이드 합니다.
sudo apt-get upgrade

패키지 정보 업데이트 및 업그레이드 합니다.

 

sudo apt-get install mysql-server

mysql 을 설치합니다.

 

sudo ufw allow mysql

외부접속을 허용합니다.

 

sudo systemctl start mysql

mysql을 실행합니다.

 

sudo systemctl enable mysql

서버 재 실행 시 mysql도 자동으로 실행되게 합니다.

 

sudo systemctl status mysql

설치 완료 후 mysql 상태를 조회 할 수 있습니다.

 

[mysql status 조회화면]

 

MySql 설정 


 

sudo mysql -u root -p

mysql에 접속합니다.(초기 비밀번호는 설정되어 있지 않습니다.)

 

[mysql root 접속 성공화면]

 

use mysql;    // mysql database

데이터 베이스를 선택합니다.

 

 

select host,user,authentication_string from mysql.user;

root 접속권한체크 : root 아이디는 보안을 위해 외부호스트 포트 연결을 하지 않습니다.

 

[조회 결과화면]

 

 

ALTER USER 'root'@'localhost' IDENTIFIED BY '비밀번호';

root 사용자 비밀번호를 변경합니다.

- 비밀번호는 대문자, 소문자, 숫자, 특문 12자리 이상으로 해야합니다.

- 저는 복붙했을때 '가 제대로 인식 안돼서 직접 입력했습니다.

 

[비밀번호 변경 결과화면]

 

 

CREATE USER '사용자아이디A'@'%' IDENTIFIED BY '비밀번호';
CREATE USER '사용자아이디A'@'localhost' IDENTIFIED BY '비밀번호'; // '%' 의 의미는 외부에서의 접근을 허용

동일한 아이디로 %와 localhost 사용자를 추가합니다. 

- 비밀번호는 대문자, 소문자, 숫자, 특문 12자리 이상으로 해야합니다.

- 저는 복붙했을때 '가 제대로 인식 안돼서 직접 입력했습니다.

 

grant all privileges on *.* to '사용자아이디A'@'%';
grant all privileges on *.* to '사용자아이디A'@'localhost';

권한을 부여합니다.

 

flush privileges;

변경사항을 반영합니다.

 

[사용자등록, 권한부여, 변경사항 반영 질의문 결과 화면]

 

select host,user,authentication_string from mysql.user;

추가한 사용자 및 권한을 확인합니다.

 

[조회 결과화면]

 

quit;

mysql을 종료합니다.

 

 

 

MySQL 설정 변경


 

cd /etc/mysql/mysql.conf.d

설정파일이 있는 곳으로 이동합니다.

 

[ cd /etc/mysql/mysql.conf.d 이동 결과화면]

 

ls

현재 위치의 파일을 확인 할 수 있습니다.

 

[ls 조회 결과 화면]

 

sudo vi mysqld.cnf

설정파일로 접근합니다. i를 눌러 insert 모드로 변경합니다. 

 

 

[기존]
bind-address = 127.0.0.1
mysqlx-bind-address = 127.0.0.1

[변경]
bind-address = 0.0.0.0
mysqlx-bind-address = 0.0.0.0

127.0.0.1 을 0.0.0.0으로 변경합니다.

 

#characterset 설정

character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
skip-character-set-client-handshake
#시간설정: UTC기준으로 한국시간이 +9:00 입니다.

default-time-zone="+09:00"

파일 맨 밑에 characterset과 timezone 설정을 추가합니다.

 

:wq!

 

esc 를 눌러 insert 모드를 종료 한 후 :wq! 명령어로 설정을 저장합니다.

 

sudo systemctl restart mysql

mysql을 재실행 합니다.

 

 

sudo apt install net-tools

포트번호를 확인 하기 위해 설치합니다.

 

netstat -tnlp

IP 주소 및 포트번호를 체크합니다.

 

 

[ IP주소 및 포트번호 조회 결과화면 ]

 

sudo mysql -u [사용자아이디] -p

추가한 사용자로 mysql에 접속합니다.

 

states

 

characterset 설정이 반영되었는지 확인하기 위해 mysql 설정상태를 조회 합니다.

 

[ mysql status 조회 결과화면 ]

 

 

select @@global.time_zone, @@session.time_zone,@@system_time_zone;

UTC기준으로 +9:00으로 설정되었는지 확인합니다.

 

[ mysql timezone 조회 결과화면 ]

 

 

select now();

now() 질의문으로 내 컴퓨터 시간과 동일하게 나오는지 확인합니다.

 

테스트용 데이터를 입력합니다.

# 예시 : CREATE DATABASE `test`;

CREATE DATABASE `스키마 이름`;

스키마를 생성합니다.

 

# 예시 : use test;

use 스키마 이름;

생성한 스키마로 데이터베이스를 변경 후 테이블을 생성합니다.

 

quit;

mysql을 종료합니다.

 

 

MySQL Workbench 연결


mysql workbench 좌측 상단 [Database] - [Manage Connections ..] 를 클릭합니다.

 

홈 화면 빨간색 박스 안 설정을 클릭해도 동일하게 [Manage Server Connections] 화면을 조회할 수 있습니다.

 

좌측 하단 [New]를 클릭합니다.

 

 

아래 내용을 입력합니다.

1. 연결 이름을 입력합니다.

2. AWS 퍼블릭 IPv4 주소를 입력합니다.

3. mysql 설정 시 등록한 사용자 아이디를 입력합니다.

4. 사용자 비밀번호를 입력한 후 OK를 클릭합니다.

5. 우측 하단 [Test Connection]을 클릭합니다.

 

 

[테스트 연결 성공 화면]

 

 

연결완료 후 Workbench에 접속할 수 있는 화면이 추가됩니다.

 

aws mysql server에서 만든 db를 조회 할 수 있습니다.

 

참고: https://toypapa.tistory.com/88