EC2 Ubuntu 인스턴스 생성부터 Java, Mysql 설치 및 외부접속하기

Dev_ch·2022년 11월 4일
0
본 글은 2022.11.01에 작성되었습니다.

인스턴스 생성은 전에 작성한 아래 글을 참고해주세요! 다만 이 부분에서 운영체제를 Ubuntu로 선택하면 됩니다.

https://dev-chw.tistory.com/27

운영체제를 linux가 아닌 ubuntu로 EC2 인스턴스를 생성할 일이 생겨서 작업하게 됐다. 다만, 자꾸 발목을 잡는 문제들이 계속 발생해서 블로그까지 정리하게 되었다. (이것도 결국 필자가 잊지 않기 위한 글..)

내가 인스턴스를 생성하여 접속부터 java, mysql 등을 설치하기 까지 험난한 과정을 거쳐서 중간에 포기할 뻔했지만 멘탈 꽉 잡고 떠났던 여정을 하나씩 살펴보자.

1. 진행


1. 인스턴스 접속

$ ssh -i <비밀 키 경로> ubuntu@<IP 주소>

처음부터 막혔었는데 이유는 위와 같이 터미널에 입력하여 인스턴스에 접속하여야 하는데 linux 운영체제를 사용하던 것처럼 ec2-user@<IP 주소> 와 같이 적었었다. ubuntu이기 때문에 ubuntu@<IP 주소>를 입력해주어야 한다. 진짜 바보같이 헤맸다.

2. JDK 설치

sudo 권한으로 apt 업데이트를 한 이후에 openjdk v17을 설치한다.

$ sudo apt update
$ sudo apt install openjdk-17-jdk

여기에서는 딱히 문제가 발생하진 않았지만 linux 운영체제와 다른 설치법이기 때문에 작성해 놓는다. 참고로 필자의 경우 Java 17 버전을 사용했기에 17 버전을 설치하였다.

3. Mysql 설치

사실 이 부분이 내 시간을 헤까닥 잡아먹은 장본인이다. ubuntu이전에 linux에 mysql 내장 DB를 이용하려 했다 큰고 다친 적이 있어 ubuntu로 넘어왔는데 이번에도 발목을 잡기 시작했다. 하지만 여기서 포기하면 뭣도 아닐 거란 생각에 계속 파고 팠다. 설치 과정부터 발목을 잡았던 문제들을 하나씩 살펴보자.

서버에 접속후 apt를 update 해주었기에 바로 mysql을 설치했다.

$ sudo apt install mysql-server
$ mysql --version

위와 같이 입력하여 mysql을 설치하였고 mysql이 잘 설치되었는지 확인하였다. 설치가 잘된 것을 확인하여 기쁜 마음으로 root 계정으로 접속하려던 찰나, 접속이 되지 않았다. mysql을 설치할 때 비밀번호를 입력하는 창도 없었기에 root 계정이 평소처럼 처음 설치했기에 엔터를 입력하면 당연히 접속될 것이라 생각했는데 아니었다. 그렇게 또 구글을 뒤지기 시작했다.

맨 처음에는 $ sudo mysql_secure_installation을 입력하여 패스워드를 새로 설정하는 방법을 찾았지만 터미널에 입력 후 새로운 비밀번호와 비밀번호 재확인을 입력하면 자꾸 권한이 거부되었다는 메시지가 출력되었다. 이때부터 멘털이 약간 흔들리기 시작했지만 방법을 다시 찾아 나섰다.

열심히 찾고 난 이후 해결책으로는 아래와 같았다.

$ sudo mysql

위와 같이 입력 하여 mysql에 접속한다. 그다음

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password by '새로운비밀번호';

위와 같이 sql 문을 실행해주는데 여기서 새로운 비밀번호를 입력할 때 작은따옴표도 적어줘야 한다. 헷갈리지 말자.

참고로 비밀번호를 설정할 때 Mysql의 비밀번호 정책에 의거하여 새로운 비밀번호를 입력해주어야 하기에 비밀번호 설정에 오류가 있다면 정책을 찾아본 이후 제대로 입력해주자. 무튼, 위 sql 문이 정상적으로 작동했다면 Query OK 가 나올 것이다.

다시 mysql 접속을 나온 후 아래와 같이 입력해주자.

 $ sudo mysql_secure_installation

그렇다면 우리가 설정했던 비밀번호를 입력하는 창이 뜨는데 설정해준 대로 적어주자. 여기서 비밀번호를 다시 설정하냐고 물어보는데 우리는 이미 사용할 비밀번호를 정했기에 n을 입력하여 재설정을 하지 않도록 해주자. 나머지는 전부 y로 처리하자.

이제 root 계정에 드디어 접속할 수 있게 됐다. 하지만 내 목표는 외부에서 접속하여 해당 DB를 조작할 수 있게끔, GUI 툴도 사용하여 더 편한 관리를 하고 싶기에 이제 외부 접속을 허용시키려 했다. 여기서 내 삽질기는 지속됐다. 하지만 아래의 본문에서는 해결하여 정상적으로 작동한 구문만 작성하겠다.

$ sudo mysql -u root -p
$ create user '사용할 유저명'@'%' identified by '사용할 비밀번호';
$ grant all privileges on *.* to '유저명'@'%' with grant option;

위와 같이 root 계정에 접속하여 새로 사용할 유저를 모든 곳에서 접속 가능하게끔 생성해주고 생성한 유저에 모든 곳에서 접속한 모든 유저에게 모든 권한을 주게끔 허용해주었다.

아 참고로 생성한 유저를 삭제해야 되는 경우가 있다면

DROP USER 'user 이름'@'server 이름';

위와 같이 삭제해주자. 여기서 server 이름은 'localhost' 이거나 위와 같이 모든 곳에 접속이 가능한 유저의 경우 '%'이다.

이제 외부 접속을 허용해주어야 하는데 하는 방법은 다음과 같다.

  1. EC2 보안 그룹의 인바운드 규칙에 mysql/Aurora에 0.0.0.0/0을 추가 ( 이 경우 블로그 포스팅에 이미 포함하고 있음 )
  2. mysqld.cnf 수정

1번은 이미 필자의 블로그에 서술이 되어있으니 EC2와 RDS 편을 읽어보도록 하자.
2번의 경우 차근차근 따라가면 크게 어렵지 않았는데 다음과 같다.

$ sudo -i // root 계정으로 전환
$ cd etc/mysql // mysql 폴더로 이동
$ grep -r "bind" ./ // 커맨드를 통해 해당 경로를 파악
$ vim mysql.conf.d/mysqld.cnf // 커맨드를 통해 파악한 경로에 mysqld.cnf를 vim 에디터로 열기

위와 같이 입력하면 vim 에디터로 mysqld.cnf를 열어 수정할 수 있게 되는데 우리가 수정할 부분은 2가지이다. 스크롤을 내리다 보면 bind-address와 mysqlx-bind-address 항목을 찾을 수 있는데 # 을 이용해 2가지를 주석처리해주고 :wq를 이용해 저장하고 나가주자.

$ sudo systemctl restart mysql

마지막으로 위와 같이 입력 후 mysql을 재부팅하면 완료된다.

그리고 내가 사용하는 SequelAce로 들어가 접속을 테스트하였고 결과는 성공이었다. GUI를 이용해 Database를 생성해는데에도 문제없이 진행되었다.

2. 마무리


EC2를 이용해 ubuntu 운영체제로 인스턴스를 생성하여 java와 mysql을 설치하는데 꽤나 힘들었다. 이것도 아직 내가 미숙해서 그런 거겠지만, 최종적으로 ubuntu로 넘어온 이유는 데스크톱 GUI 환경 구성을 하고자 넘어왔다. linux는 방법이 있는지 없는지 잘 모르겠지만 ubuntu로 데스크톱 GUI를 구성하는데 자료가 많아 선택하게 되었다. 아무튼 위와 같이 결국은 해결하게 되었고 잊지 않기 위해서 블로그에 글 작성까지 하게 됐다.

아마 다음은 EC2 인스턴스를 이용해 생성한 ubuntu를 GUI를 통해 작업하는 것이 되지 않을까 싶은데 그때까지 또 삽질해보도록 하자.

그럼 이만 ~!

profile
내가 몰입하는 과정을 담은 곳

0개의 댓글