본문 바로가기
IT

AWS EC2 우분투 - MariaDB(MySQL) 설치 방법

by SOGNOD 2024. 8. 17.
반응형

AWS 우분투에 MariaDB 설치

테스트 서버에 MariaDB 추가 설치 요청이 있어서 MariaDB(MySQL) 설치 기록을 남겨 보아요.

EC2 인스턴스에 SSH로 접속하기

터미널을 열고 다음 명령어를 사용하여 인스턴스에 SSH로 접속합니다.

  • /path/key-file.pem - 생성한 키 페어의 경로
  • instance-public-ip - 인스턴스의 퍼블릭 IP 주소

 

ssh -i /path/key-file.pem ubuntu@instance-public-ip

 

시스템 업데이트하기

SSH로 접속한 후 시스템 패키지 목록과  패키지를 업그레이드합니다.

sudo apt update
sudo apt upgrade -y

 

패키지 업그레이드 로그

user@ip-:~$ sudo apt update
[sudo] password for user: ****
Hit:1 http://ports.ubuntu.com/ubuntu-ports noble-security InRelease
Hit:2 http://ap-northeast-2c.clouds.ports.ubuntu.com/ubuntu-ports noble InRelease
Get:3 http://ap-northeast-2c.clouds.ports.ubuntu.com/ubuntu-ports noble-updates InRelease [126 kB]
Hit:4 http://ap-northeast-2c.clouds.ports.ubuntu.com/ubuntu-ports noble-backports InRelease
Get:5 http://ap-northeast-2c.clouds.ports.ubuntu.com/ubuntu-ports noble-updates/main arm64 Packages [342 kB]
Get:6 http://ap-northeast-2c.clouds.ports.ubuntu.com/ubuntu-ports noble-updates/universe arm64 Packages [316 kB]
Fetched 784 kB in 3s (238 kB/s)
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
All packages are up to date.

user@ip-:~$ sudo apt upgrade -y
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Calculating upgrade... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

 

MariaDB 설치하기

MariaDB 패키지를 설치합니다.

sudo apt install mariadb-server -y

 

MariaDB 서비스 시작 및 상태 확인

MariaDB 서비스를 시작하고 상태를 확인합니다:

sudo systemctl start mariadb
sudo systemctl enable mariadb
sudo systemctl status mariadb

 

MariaDB 시작 및 상태 확인 로그

user@ip-:~$ sudo systemctl start mariadb
user@ip-:~$ sudo systemctl enable mariadb
Synchronizing state of mariadb.service with SysV service script with /usr/lib/systemd/systemd-sysv-install.
Executing: /usr/lib/systemd/systemd-sysv-install enable mariadb
user@ip-:~$ sudo systemctl status mariadb
● mariadb.service - MariaDB 10.11.8 database server
     Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; preset: enabled)
     Active: active (running) since Sat 2024-08 00:40:46 KST; 43s ago
       Docs: man:mariadbd(8)
             https://mariadb.com/kb/en/library/systemd/
   Main PID: 1080 (mariadbd)
     Status: "Taking your SQL requests now..."
      Tasks: 12 (limit: 7128)
     Memory: 80.2M (peak: 90.9M)
        CPU: 406ms
     CGroup: /system.slice/mariadb.service
             └─115080 /usr/sbin/mariadbd

Aug 17 00:40:46 ip-172-31-43-79 mariadbd[115080]: 2024-08-17  0:40:46 0 [Note] Plugin 'FEEDBAC>
Aug 17 00:40:46 ip-172-31-43-79 mariadbd[115080]: 2024-08-17  0:40:46 0 [Note] InnoDB: Loading>
Aug 17 00:40:46 ip-172-31-43-79 mariadbd[115080]: 2024-08-17  0:40:46 0 [Warning] You need to >
Aug 17 00:40:46 ip-172-31-43-79 mariadbd[115080]: 2024-08-17  0:40:46 0 [Note] Server socket c>
Aug 17 00:40:46 ip-172-31-43-79 mariadbd[115080]: 2024-08-17  0:40:46 0 [Note] InnoDB: Buffer >
Aug 17 00:40:46 ip-172-31-43-79 mariadbd[115080]: 2024-08-17  0:40:46 0 [Note] /usr/sbin/maria>
Aug 17 00:40:46 ip-172-31-43-79 mariadbd[115080]: Version: '10.11.8-MariaDB-0ubuntu0.24.04.1' >
Aug 17 00:40:46 ip-172-31-43-79 systemd[1]: Started mariadb.service - MariaDB 10.11.8 database>
Aug 17 00:40:46 ip-172-31-43-79 /etc/mysql/debian-start[115108]: Checking for insecure root ac>
Aug 17 00:40:46 ip-172-31-43-79 /etc/mysql/debian-start[115112]: Triggering myisam-recover for>
lines 1-23/23 (END)

 

MariaDB 보안 설정

mysql_secure_installation 스크립트를 사용하여 MariaDB 보안을 설정합니다:

이 스크립트를 는 기본 비밀번호 설정, 익명 사용자 제거, 원격 루트 로그인 비활성화 등 보안 설정을 안내합니다.

sudo mysql_secure_installation
user@ip-:~$ sudo mysql_secure_installation

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
haven't set the root password yet, you should just press enter here.

Enter current password for root (enter for none):
OK, successfully used password, moving on...

Setting the root password or using the unix_socket ensures that nobody
can log into the MariaDB root user without the proper authorisation.

You already have your root account protected, so you can safely answer 'n'.

Switch to unix_socket authentication [Y/n] n
 ... skipping.

You already have your root account protected, so you can safely answer 'n'.

Change the root password? [Y/n] n
 ... skipping.

By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

익명 사용자 삭제?
Remove anonymous users? [Y/n] y
 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

원격에서 root 계정으로 접속 허용 여부?
Disallow root login remotely? [Y/n] y
 ... Success!

By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

test database 삭제 여부?
Remove test database and access to it? [Y/n] y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

권한 테이블 다시 로드
Reload privilege tables now? [Y/n] y
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

어렵지 않게 설정이 마무리 되었습니다.

 

MariaDB에 접속하기

MariaDB의 기본 CLI 클라이언트를 사용하여 데이터베이스에 접속합니다.

sudo mysql -u root -p

MariaDB지만 mysql 로...ㅎㅎ
root 비밀번호를 입력하면 MariaDB 에 접속이 완료 됩니다.

MariaDB 접속 로그

user@ip-:~$ sudo mysql -u root -p
[sudo] password for user: ****
Enter password: ****
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 37
Server version: 10.11.8-MariaDB-0ubuntu0.24.04.1 Ubuntu 24.04

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>

 

MariaDB(MySQL) 사용자 계정 생성

root 계정으로는 외부 접속을 허용하지 않았기때문에 새로운 user 를 추가합니다.
MariaDB에서 새로운 사용자 계정을 생성하고 외부 접근 권한을 부여합니다. 

MariaDB [(none)]> create user 'newuser'@'%' identified by 'password';
Query OK, 0 rows affected (0.005 sec)

'%'는 모든 IP 주소에서 접속을 허용하는 와일드카드입니다.
특정 IP 주소만 허용하려면 IP를 등록 합니다.

 

권한 부여하기

new user 사용자에게 필요한 권한을 부여합니다.
다음 명령어를 사용하여 모든 데이터베이스에 대한 권한을 부여할 수 있습니다.

GRANT ALL PRIVILEGES ON *.* TO 'user'@'%' WITH GRANT OPTION;

ALL PRIVILEGES는 모든 권한을 부여합니다...필요에 따라서 특정 데이터베이스와 특정 권한만 부여할 수 도 있습니다.
WITH GRANT OPTION은 다른 사용자에게 권한을 부여할 수 있는 권한을 의미합니다.

 

권한 적용하기

권한 변경 사항을 적용하려면 다음 명령어를 실행합니다:

FLUSH PRIVILEGES;

 

외부에서 MariaDB Server 접속 허용하기

MariaDB가 외부에서 접속을 허용하도록 설정해야 합니다.
/etc/mysql/mariadb.conf.d/50-server.cnf 파일을 편집하여 bind-address를 변경합니다:

sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

 

bind-address 항목을 0.0.0.0으로 설정하여 모든 IP 주소에서의 접속을 허용합니다:

bind-address = 0.0.0.0

 

파일을 저장하고 종료한 후, MariaDB 서비스를 재시작합니다:

sudo systemctl restart mariadb

 

이제 외부에서 MariaDB 원격 접속을 허용하고, 원격 접속할 계정을 만들어 봅니다.

반응형