EC2 환경에 DB를 설치해보자 - 1

Fermion·2024년 1월 7일
0

What is Development

목록 보기
3/9
post-custom-banner

DB의 경우 보통 local에 설치하기 보다는 Docker를 이용하여 Container로 관리하고는 한다.
Docker를 이미 사용하고 있다면, Docker Image를 다운받아 간편하게 사용할 수 있다.
하지만, 가끔 local 환경에 설치하고 싶을 때가 있을 수도 있다.
그런 상황을 위해 가장 흔히 사용하는 RDB인 MySQL을 설치해보자.


MySQL 설치하기

Amazon Linux 2023을 기준으로 진행하였기에
Amazon Linux 1이나 Amazon Linux 2를 사용하는 경우 차이가 있을 수 있다.

먼저 dnf package에 mysql이 있는지 확인해보자
sudo dnf list | grep mysql

package에 mysql이 존재하는 것을 확인하였다면 설치를 진행한다.
원하는 특정 버전이 있다면, 해당 package를 가져와 해당 버전으로 설치를 진행하면 된다.
sudo dnf install mysql80-community-release-el9-1.noarch.rpm -y
sudo dnf install mysql-community-server -y


MySQL 실행하기

MySQL의 설치를 완료했다면 MySQL을 실행해보자
sudo systemctl start mysqld

MySQL이 정상적으로 실행중인지 확인해보자
sudo systemctl status mysqld


MySQL 접속하기

MySQL에 접속하기 위한 방법으로는 두가지가 있다.

  1. 계정 없이 접속하기
  2. root 계정을 이용하여 접속하기

1. 계정 없이 접속하기

계정 없이 접속하기 위해서는 /etc/my.cnf 파일을 수정해야 한다.

sudo vim /etc/my.cnf를 통해 /etc/my.cnf 파일을 열고
[mysqld] 아래에 skip-grant-tables 문장을 추가한다.

sudo systemctl restart mysqld를 통해 mysql server를 재시작한다.

mysql을 입력하면 계정 없이 mysql에 접속할 수 있다.


2. root 계정을 이용하여 접속하기

mysql은 설치시 임시 비밀번호를 발급하여 root 계정을 생성해준다.

임시 비밀번호는 다음과 같이 확인할 수 있다.
sudo cat /var/log/mysqld.log | grep "A temporary password"
A temporary password is generated for root@localhost: XXXXXXXXXXXX

임시 비밀번호를 이용하여 mysql에 root 계정을 접속을 진행하자
mysql -u root -p XXXXXXXXXXXX

접속했다면 root 계정의 암호를 변경하자
ALTER USER 'root'@'localhost' IDENTIFIED BY '변경할 비밀번호';

MySQL 5.7.6 버전이상부터는 Password에 일정한 규칙을 강제하기 때문에
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
라는 오류를 만날 수 있다.

show variables like 'validate_password%;'를 입력하면
Password 정책을 확인할 수 있다.

LOW인 경우 password가 최소 8자 이상을 만족해야 한다.
MEDIUM인 경우 숫자, 대문자, 소문자, 특수문자가 모두 포함되어야 한다.
STRONG인 경우 password의 substring을 dictionary file에 등록된 단어와 비교하여 등록되어 있는 경우 사용할 수 없다.

[출처: https://dev.mysql.com/doc/mysql-security-excerpt/8.0/en/validate-password-options-variables.html]

따라서 Password 정책에 맞는 비밀번호를 설정하거나

혹은 Password 정책을 낮추는 방법을 사용할 수 있다.

set global validate_password.policy=LOW;를 입력하면
일시적으로 Password 정책을 LOW로 조정할 수 있다.

이러한 과정을 거쳐 비밀번호를 변경하는 query가 성공했다면
FLUSH PRIVILEGES;를 통해 변경사항을 적용한다.

이렇게하면 root 계정을 설정한 비밀번호를 통해 접속할 수 있다.
mysql -u root -p '변경한 비밀번호'


MySQL 계정 생성하기

MySQL 접속에 성공하였다면 root 이외에 별도의 계정을 생성해보자
create user '계정 이름'@'%' identified by '비밀번호';

'%'는 모든 host에서 접속이 가능하다는 의미이다.
localhost로 설정하면 localhost에서만 접속이 가능하다.

생성한 계정에 권한을 부여해보자
grant all privileges on *.* to '계정 이름'@'%';

ALL PRIVILEGES는 SELECT, UPDATE, INSERT, DELETE 작업 등의 모든 권한을 부여한다는 의미이다.
*.*은 모든 데이터베이스의 모든 테이블에 대한 권한을 부여한다는 의미이다.

이렇게 권한을 부여했다면 변경사항을 적용하자
FLUSH PRIVILEGES;

이렇게 생성한 계정의 정보는
use mysql; select * from user;을 통해 확인할 수 있다.
Host, User, Privilege 등의 다양한 정보를 확인할 수 있다.

해당 Table에 Column이 많기에 계정이 생성되었는지만 확인하고자 한다면
select user, host from user;와 같이 필요한 column만 확인하도록 하자

profile
Deep dive into development
post-custom-banner

0개의 댓글