MySQL EC2에 설치후 WorkBench 접속하기
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 보안그룹의 인바운드 규칙을 설정해줘야한다.
MYSQL을 선택하고 0.0.0.0/0 을 지정해주었다.
두번째로는 EC2의 mysqld.cnf
파일의 내용을 수정해줘야한다.
cd /etc/mysql/mysql.conf.d
해당 경로에 진입하면 mysqld.conf
파일을 열 수 있고
sudo vi mysqld.cnf
sudo를 이용해야 저장이 가능하다.
파일의 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 정보를 확인할 수 있다.
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를 이용해
위와 같이 정상적으로 WorkBench에 접속할 수 있을 것이다!!!
혹시나 아래와 같은 알람이 발생한 경우에는
Unable to connect to localhost
나와 같은 경우에는 EC2 인바운드 규칙 설정과
mysqld.conf
설정한 값이 맞지 않아서 였다.
혹시나 참고차 올려본다.