[AWS] EC2(Amazon Linux 2)에 MySQL 설치/접속

손지민·2024년 1월 3일
0

AWS

목록 보기
10/13
post-thumbnail

개요

로걸에서 AWS EC2 서버에 복사한 jar 파일 실행을 위해 MySQL을 설치/접속 해보겠습니다.

  • Git Bash 사용
  • Amazon Linux 2

MySQL 설치/접속

전체흐름

Yum Repository 에는 MySQL 서버의 패키지 경로가 존재하지 않는다.
1. 따라서 먼저 Amazon Linux2 서버 위에 Yum Repository를 추가해준다.
2. MySQL 설치한다.
3. MYSQL 시작한다.
4. MySQL 접속한다.
5. MySQL root계정 접속하여 비밀번호 변경
6. 사용자 계정 생성 후 권한 부여

사전 작업

MySQL 설치

리눅스 시스템의 운영체제 정보를 출력하는 명령

  • $ cat /etc/os-release

시스템 업데이트

  • $ sudo yum -y update

yum repository에 등록

  • sudo yum install https://dev.mysql.com/get/mysql80-community-release-el7-5.noarch.rpm
  • (y/d/n 나오면 y 입력해주기)

MySQL 설치

  • $ sudo yum -y install mysql-community-server

    • /etc/yum.repos.d directory 이 경로에 설치됨.
    • $ ls /etc/yum.repos.d 명령어로 확인 가능
      • mysql 관련 파일 3개 확인 가능
  • YUM 패키지 관리자의 저장소(repositories) 목록을 출력하는 명령어

  • $ sudo yum repolist

MySQL 설치 버전 확인

  • mysql --version
  • 아래와 같이 버전 확인 가능

MySQL 시작,실행

  • $ sudo systemctl start mysqld: MySQL 서비스를 수동으로 시작합니다.

  • $ sudo systemctl enable --now mysqld: MySQL 서비스를 부팅시 자동으로 시작하도록 활성화하고, 즉시 실행합니다.

    MySQL을 설치하고 초기 설정을 마치려면, 보통 enable --now로 MySQL 서비스를 활성화 및 시작하는 것이 편리합니다.

  • $ systemctl status mysqld: 현재 MySQL 서비스의 상태를 확인할 수 있습니다.


MySQL 접속

임시 비밀번호 받기

  • sudo grep 'temporary password' /var/log/mysqld.log:
    MySQL 서버는 초기에 Root 계정만 존재하며, 임시 비밀번호가 발급된 상황입니다. 초기에 해야할 일은 임시 비밀번호를 대체하고, 실제 데이터베이스에 접근할 사용자 계정을 만드는 일입니다.
  • 임시 비밀번호가 확인됩니다. (아래 사진의 경우 gwsth/L8Qj/# )

임시 비밀번호를 이용하여 MySQL 서버에 접속

  • $ mysql -uroot -p 명령어 입력 후 비밀번호 입력합니다.
    • 루트 비밀번호를 설정할 때까지 다른 작업 불가능합니다.

      여기서는 사용하지 않지만
      $ sudo mysql_secure_installation -p명령을 실행하면 MySQL을 보안 설정하는 대화형 인터페이스가 시작됩니다. MySQL 쉘에서 직접 root 비밀번호를 변경할 수 있다는 것을 나타냅니다.

root 계정 비밀번호 변경

  • ALTER user 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '변경할 비밀번호';

MySQL 5.7.6 이상에서는 패스워드 정책이 추가되어, 보안 상의 이유로 일정한 규칙을 따라야 합니다.
1. 8자 이상의 길이
2. 대문자, 소문자, 숫자, 특수문자 중 세 가지 이상의 조합 사용
3. 이전에 사용한 비밀번호와 다르게 설정

비밀번호 변경을 반영

  • FLUSH PRIVILEGES;

사용자 계정 만들기

MySQL에서 보안을 강화하려면 root 계정 외에도 필요한 권한만 가진 사용자 계정을 만들어 사용하는 것이 좋습니다.

  • create user '<계정 이름>'@'%' identified by '<비밀번호>';
    • '%'는 어떤 호스트에서든 접속이 가능하다는 의미입니다.
    • <계정 이름>, <비밀번호> 에는 실제 사용할 값이 들어가야합니다.

생성한 계정에 권한 부여

보안상의 이유로 최소한의 권한만 부여하는 것이 좋습니다.

  • GRANT ALL PRIVILEGES ON *.* to '<계정 이름>'@'%'; : 모든 권한을 부여
  • GRANT ALL PRIVILEGES ON database_name.* TO 'ward'@'%'; : 특정 데이터베이스나 특정 테이블에 대한 권한만 부여
  • GRANT SELECT, INSERT, UPDATE, DELETE ON database_name.* TO 'ward'@'%'; : CRUD 작업에 필요한 최소한의 권한만 부여

권한 반영

  • FLUSH PRIVILEGES;

참고

profile
Developer

0개의 댓글