본문 바로가기

사이드 프로젝트/가계부 앱 만들기

[가계부 앱 개발 1] 맥으로 마리아 db 서버 구축하기

 

내가 기록한 글이 AI 학습에 이용된다는 사실을 알고나서 내 데이터를 다른 곳에 쓰기가 꺼려진다. 개인 서버를 운영하려고 AWS, 구글 클라우드로 서버 쓰려니 비용이 너무 부담된다.  집에 놀고 있는 노트북 + 외장하드로 서버를 구성하고, 가계부, 일기장, 할일/일정관리 db로 써보려고 한다. 메인으로 쓰던 db는 마이크로 소프트 SQL Server지만, 무료 사용에 제한이 있고 맥북 호환이 안될 것 같아서 마리아  db를 쓰기로 했다. 

 

1. 시스템 구성도

 

수정 필요. 맥북과 공유기는 와이파이가 아니라 랜선 연결로 바꾸었다.

간단히 시스템 구성도를 그려보았다. 목표는 외부 PC, 스마트폰에서 서버에 있는 데이터에 접근하는 것이다

 

 

2. 맥에 마리아 db 설치하기 

brew update
brew upgrade
brew install mariadb

 

 

3. 데이터 저장 위치 변경

1) 기존 데이터 저장 위치 확인하기

mysqld --verbose --help | grep datadir

 

2) 마리아DB 설정 파일에 새 저장 폴더 경로 추가하기

 

(1) 새로운 폴더 생성 및 권한 부여하기

# 새 폴더 생성
mkdir /새로운/폴더/경로

# 권한 부여
sudo chmod -R 755 /새로운/폴더/경로

 

(2) 마리아 db 설정 파일에 새 저장 경로 추가

# my.cnf

[mysqld]
...
datadir=새로운/폴더/경로
...

 

3) 기존 데이터 이전하기 

# 서버 중지
homebrew service stop mariadb

# 데이터 이전
sudo cp -R 기존/폴더/경로 /새로운/폴더/경로

 

4) 저장 경로 변경 확인하기

# 서버 시작
sudo mysql.server start

# 데이터 저장 경로 확인
mysqld --verbose --help | grep datadir

 

기존 저장 위치가 아닌 새로운 폴더 경로가 나오면 성공이다.

 

5) 서버 재시작 

# 서버 중지 
sudo mysql.server stop 

# 서버 시작
brew services start mariadb

 

 

 

4. 외부 접속 설정하기

 

1) 마리아 DB 원격 접속 허용하기

 

마리아 db 설정 파일 폴더에 존재하는 모든 bind-address=127.0.0.1 주석 처리

# my.cnf

[mysqld]
...
# 원격 접속 허용하기
bind-address=0.0.0.0
...

 

 

2) 공유기 포트포워딩

 

(1) 맥 내부 아이피 확인하기

설정 > 네트워크 > 연결된 와이파이의 세부사항 버튼 클릭

(2) 공유기 설정 변경하기 

TP 링크의 경우, 192.168.0.1 접속 > 고급 > NAT 포워딩

 

4) 원격 접속 테스트 하기 

 

(1) 서버 컴퓨터 : 새로운 유저 생성 및 권한 부여 

# 새로운 사용자 생성
CREATE USER '사용자아이디'@'%' IDENTIFIED BY '사용자비밀번호';

# 모든 IP 주소에서 특정 데이터베이스 접속허용
GRANT ALL PRIVILEGES ON '데이터베이스이름'.* TO '사용자아이디'@'%'; 
# 모든 IP 주소에서 모든 데이터베이스 접속허용
GRANT ALL PRIVILEGES ON *.* TO '사용자아이디'@'%'; 

# 변경 사항 적용
FLUSH PRIVILEGES;

 

(2) 외부 PC :  마리아DB 설치 후 서버 접속하기

# 서버 외부 IP 주소: 서버 컴퓨터에서 https://ip.pe.kr 접속
mysql -u [사용자이름] -h [서버외부IP주소] -p

 

 

 


 

 

참고 ) 마리아 DB 설정 파일 위치 조회

mysql --help | grep "Default options" -A 1

 

만약 아무것도 조회되지 않는다면 마리아db가 제대로 설치되지 않은 것이다. 맥을 업데이트 하고, 맥 버전에 맞는 최신 Command Line Tool for Xcode(다운경로)를 설치한다.

 

로그인 - Apple

 

idmsa.apple.com

 

 

 

참고) 마리아 DB 설정 파일 저장 방식

my.cnf 파일 하나에 모두 작성 my.cnf.d 폴더 아래에 여러개의 파일로 분리해서 작성
- 하나의 파일 내에서 설정 종류를 주석으로 구분
- 폴더 내의 파일 이름으로 설정 종류 구분
   ex) server.cnf, remote.cnf, data.cnf

 

 

 

참고) 서버 실행/중지 명령어 비교

brew services start/stop mariadb  mysql.server start/stop

- 일반적인 경우
- 관리하기 쉬움
   ex) 컴퓨터 재시작하면 자동으로 실행

- 문제 해결이나 특별한 설정이 필요한 경우 
   ex) 데이터 저장 경로 변경

 

 

 

참고) 루트 비번 잊었을 때 재설정하기 

 

1) 안전모드로 서버 재시작

# 서버 중지
brew services stop mariadb

# 안전모드로 서버 시작 
mysql.server start --skip-grant-tables


2) 루트 비번 없이 접속

sudo mysql -u root


3) 비밀번호 재설정

USE mysql;
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY '새로운비밀번호';
FLUSH PRIVILEGES;
EXIT;


4) 서버 정상모드 재실행

mysql.server stop
brew services start mariadb