EC2에 MySQL을 설치한다음
WorkBench로 접속하려는데 설정한 내용을 정리해보려한다.
MySQL 설치과정은 생략하겠다.


📌 yml 파일 설정

우선 EC2에 배포한 스프링 .yml 파일 설정이다.
기존과 동일하게 localhost:3306으로 설정을 해주었고

스키마 이름은 stackover라는 이름으로지 지정했다.

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/stackover?serverTimezone=Asia/Seoul # 포트넘버, 스키마이름
    username: ${MYSQL_ID} # 유저네임
    password: ${MYSQL_PASSWORD} # 비밀번호

환경변수를 사용해 유저이름과 비밀번호를 지정해줬다.


📌 EC2 설정

첫번쨰로 EC2 보안그룹의 인바운드 규칙을 설정해줘야한다.

image

MYSQL을 선택하고 0.0.0.0/0 을 지정해주었다.


두번째로는 EC2의 mysqld.cnf 파일의 내용을 수정해줘야한다.

cd /etc/mysql/mysql.conf.d

해당 경로에 진입하면 mysqld.conf 파일을 열 수 있고

sudo vi mysqld.cnf

sudo를 이용해야 저장이 가능하다.

image

파일의 bind-address를 0.0.0.0으로 설정 해주었고
mysqlx-bind-address는 주석처리를 해주었다.


세번째로는 User 계정을 생성하고
해당 계정에 권한을 부여해주었다.

mysql 접속

mysql -u root -p

처음에는 root 계정으로 진입하면 mysql에 접속이 가능하다.
만약 root 계정에 비밀번호를 설정하지 않았을 경우에는

mysql -u root

명령어로 접근한 다음에

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'yourPassword';

yourPassword에 원하는 비밀번호를 입력해 root 계정에
비밀번호를 설정해 줄 수 있다.


유저 생성
이제 mysql에 접속이 완료되었다면

SELECT user,authentication_string,plugin,host FROM mysql.user;

명령어로 등록된 user 정보를 확인할 수 있다.

image

user가 현재 내가 만들어둔 계정이고 기본으로는 root가 있다.
그리고 host를 %로 변경해주면 외부에서도 진입이 가능해진다.

이제 계정을 하나 만들어보자

create user `유저이름`@`%` identified by `비밀번호`;

유저이름과 비밀번호를 입력해 계정을 생성할 수 있다.
만약 비밀번호를 변경하고 싶은경우 위에서 root계정 비밀번호를 변경할 때
사용했던 명령어를 입력해주면 비밀번호를 변경할 수 있다.

이제 만들어진 유저 정보를 가지고

mysql -u 유저이름 -p

mysql을 root 계정이아닌 만들어진 계정으로 접속할 수가 있다.


유저 삭제
혹시나 유저를 삭제하고 싶은 경우에는

drop user 유저이름@localhost;

과 같이 입력해주면 삭제가 가능핟.


유저 권한부여
이제 유저를 만들었으니
유저에 대한 권한을 설정해주면 된다.
(root 계정에서만 설정이 가능하다)

만약 방금만든 계정으로 접속하고 설정하려고한다면
ERROR 1045 (28000): Access denied for user '유저이름'@'%' (using password: YES)
과 같은 에러를 만날 수 있다.

grant all privileges on *.* to `유저이름`@`%`;
flush privileges;

정상적으로 처리가 완료되었다면 쿼리가 날라갔다고 메세지가 나온다.

전부 완료를 하고나면 quit로 mysql을 나온다음에
우분투 터미널에서

sudo systemctl restart mysql

해당 명령어를 입력해 mysql을 재실행 시켜주자

위 과정이 전부 완료되었다면
방금 만든 계정과 비밀번호, 그리고 EC2 공개 IP를 이용해

image

위와 같이 정상적으로 WorkBench에 접속할 수 있을 것이다!!!


혹시나 아래와 같은 알람이 발생한 경우에는
Unable to connect to localhost

image

나와 같은 경우에는 EC2 인바운드 규칙 설정과
mysqld.conf 설정한 값이 맞지 않아서 였다.
혹시나 참고차 올려본다.


에러 해결 참고 레퍼런스, MySQL 외부 접속 참고 레퍼런스