모든 웹 서비스와 애플리케이션의 심장부는 바로 ‘데이터베이스(DB)’입니다. 사용자의 정보, 게시글, 결제 내역 등 비즈니스의 핵심 자산이 모두 이곳에 저장되기 때문입니다. 전 세계에서 가장 널리 사용되는 오픈소스 관계형 데이터베이스 관리 시스템(RDBMS)인 MySQL은 강력한 성능과 안정성으로 수많은 기업의 선택을 받고 있습니다.
하지만 초보 서버 관리자나 백엔드 개발자들에게 리눅스 환경에 MySQL을 설치하고, 외부에서 DBeaver나 DataGrip 같은 툴로 원격 접속하도록 세팅하는 과정은 종종 미로처럼 느껴집니다. 구글 애드센스 승인을 위한 고품질 IT 콘텐츠이자, 실무에서 즉시 활용할 수 있는 **’우분투(Ubuntu) 환경의 MySQL 설치 및 원격 접속 초기 세팅 가이드’**를 단계별로 완벽하게 정리해 드립니다.
1. 우분투(Ubuntu) 리눅스에 MySQL 설치하기
AWS EC2나 가상 서버 호스팅에 접속한 터미널 창(SSH)에서 모든 작업이 시작됩니다. 먼저 서버의 패키지 목록을 최신 상태로 업데이트한 후, MySQL 서버 패키지를 설치합니다.
Bash
sudo apt update
sudo apt install mysql-server -y
설치가 완료되면 MySQL 서비스가 정상적으로 실행 중인지 상태를 확인합니다.
Bash
sudo systemctl status mysql
화면에 초록색 불빛과 함께 active (running)이라는 메시지가 출력된다면 1단계 설치가 무사히 완료된 것입니다.
2. 보안의 첫걸음: MySQL 보안 설정 마법사 실행
방금 설치된 MySQL은 초기 상태이므로 보안에 매우 취약합니다. MySQL은 이를 방지하기 위해 기본 보안 설정 스크립트를 제공합니다.
Bash
sudo mysql_secure_installation
명령어를 입력하면 몇 가지 중요한 보안 질문들이 순서대로 나옵니다.
- VALIDATE PASSWORD COMPONENT (비밀번호 검증 플러그인 사용 여부): 강력한 비밀번호 정책을 강제할 것인지 묻습니다. 실무 환경이라면
Y를 누르고, 비밀번호 강도(0=Low, 1=Medium, 2=Strong)를 선택합니다. - Remove anonymous users? (익명 사용자 삭제): 보안을 위해 반드시
Y를 선택합니다. - Disallow root login remotely? (root 계정 원격 접속 차단): 최고 관리자인 root 계정은 서버 내부(localhost)에서만 접속할 수 있도록
Y를 누릅니다. (외부 접속용 계정은 따로 만들 예정입니다.) - Remove test database and access to it? (테스트 DB 삭제): 불필요한 테스트 DB를 지우기 위해
Y를 선택합니다. - Reload privilege tables now? (권한 테이블 즉시 새로고침): 지금까지의 변경 사항을 즉시 적용하기 위해
Y를 누릅니다.
3. 외부 접속을 위한 전용 관리자 계정 생성
앞선 보안 설정에서 root 계정의 원격 접속을 막았으므로, 이제 내 PC(외부)에서 원격으로 DB에 붙을 수 있는 새로운 전용 계정을 만들어야 합니다.
먼저 서버 내부에서 root 계정으로 MySQL에 접속합니다.
Bash
sudo mysql -u root -p
(비밀번호를 묻는다면 우분투 root 비밀번호나 그냥 엔터를 칩니다.)
MySQL 프롬프트(mysql>)가 뜨면 아래의 SQL 명령어들을 한 줄씩 입력합니다.
[계정 생성 및 권한 부여 SQL]
SQL
-- 1. 새로운 사용자 생성 ('%'는 모든 외부 IP에서 접속 가능하다는 뜻입니다.)
CREATE USER 'myadmin'@'%' IDENTIFIED BY '여기에_사용할_비밀번호_입력';
-- 2. 생성한 사용자에게 모든 데이터베이스 권한 부여
GRANT ALL PRIVILEGES ON *.* TO 'myadmin'@'%' WITH GRANT OPTION;
-- 3. 권한 변경 사항 즉시 적용
FLUSH PRIVILEGES;
-- 4. MySQL 종료
EXIT;
주의사항: 실무에서는 보안을 위해 % 대신 자신의_집_또는_사무실_IP를 특정하여 적어주는 것이 훨씬 안전합니다.
4. MySQL 설정 파일 수정: bind-address 변경
계정을 만들었지만, 아직 MySQL 서버 자체는 ‘자기 자신(127.0.0.1)’의 접속만 허용하도록 귀를 막고 있는 상태입니다. 외부의 소리를 들을 수 있도록 설정 파일을 수정해야 합니다.
텍스트 에디터로 MySQL 설정 파일을 엽니다. (우분투 버전에 따라 경로가 다를 수 있습니다.)
Bash
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
파일 내용 중에서 bind-address = 127.0.0.1이라고 되어 있는 부분을 찾습니다. 이 부분을 아래와 같이 주석 처리(#) 하거나 0.0.0.0으로 변경합니다.
Plaintext
# 수정 전
bind-address = 127.0.0.1
# 수정 후 (모든 IP에서의 접근을 수신함)
bind-address = 0.0.0.0
수정을 마쳤다면 저장(Ctrl+O, Enter, Ctrl+X)하고 빠져나온 뒤, 변경된 설정이 적용되도록 MySQL 서비스를 재시작합니다.
Bash
sudo systemctl restart mysql
5. 서버 방화벽(UFW) 및 클라우드 포트 개방
모든 DB 세팅이 끝났지만, 서버의 겉을 둘러싸고 있는 철문(방화벽)이 닫혀있다면 여전히 접속할 수 없습니다. MySQL의 기본 통신 포트인 3306번을 열어주어야 합니다.
[우분투 자체 방화벽(UFW) 설정]
Bash
sudo ufw allow 3306/tcp
[클라우드(AWS EC2 등) 보안 그룹 설정]
- AWS 콘솔에 로그인하여 EC2 인스턴스에 연결된 **보안 그룹(Security Group)**으로 이동합니다.
- ‘인바운드 규칙 편집’에서 유형: MySQL/Aurora, 포트: 3306을 추가합니다.
- 보안 꿀팁: 소스(접근 허용 IP)를
0.0.0.0/0(위치 무관)으로 설정하면 전 세계 해커들의 표적이 되기 쉽습니다. 가급적 **’내 IP’**를 선택하여 개발자의 PC에서만 접근할 수 있도록 차단막을 치는 것이 안전합니다.
결론: 원격 접속 테스트와 완벽한 DB 환경의 완성
이제 모든 빗장이 풀렸습니다! 여러분의 로컬 PC에서 DBeaver, MySQL Workbench, DataGrip 같은 데이터베이스 관리 툴을 켜고 테스트를 진행해 보세요.
- Host: 서버의 공인 IP 주소 (예: 123.45.67.89)
- Port: 3306
- Username: 아까 생성한 계정 (예: myadmin)
- Password: 설정한 비밀번호
‘Test Connection(연결 테스트)’ 버튼을 눌러 성공적으로 연결되었다는 메시지를 확인하셨다면, 백엔드 개발과 서비스 런칭을 위한 가장 든든한 데이터베이스 인프라 구축에 성공하신 것입니다. 이 가이드를 통해 더 이상 낯선 터미널 창에서의 DB 세팅을 두려워하지 않고, 자유자재로 데이터를 다루는 전문가로 거듭나시기를 응원합니다.