프로젝트/북극팽귄 프로젝트

라즈베리파이를 이용한 웹 서버 구축 (2) - 라즈베리파이에 DB 서버 구축하기

58청춘 2024. 10. 18. 20:03
728x90

DB 만들기

이전에 외부에서 라즈베리파이(이하 라파)에 접근하는 방법을 정리했다.

 

이제 라파에 데이터베이스를 구축해 보도록 하자. 필자는 MariaDB를 사용했다.

 

설치 및 기초 세팅

 

우선 MariaDB를 설치해주자.

sudo apt-get update

sudo apt-get install mariadb-server

 

설치가 완료되었다면 mysql에 접속해보자.

sudo mysql

use mysql;

 

그 다음 아래의 명령어를 사용해 값들이 잘 나오는지 확인해보자.

select user, host, password from user;

 

값들이 잘 나왔다면 라파 내부가 아닌 외부에서도 DB에 접속할 수 있게 권한을 설정해주자.

create user '사용할 계정명'@'%' identified by '비밀번호';

grant all privileges on *.* to '위에서 생성한 계정명'@'%';

flush privileges;

 

이제 접속을 하면 되는데, 만약 외부에서 접속을 시도할 때 필자 처럼 에러를 겪는다면 아래와 같은 방법을 적용해보는 것도 좋다.

 

1. Access denied for user '사용자명'@'IP주소' (using password: YES)

이 에러의 경우 mariaDB의 접근 허용이 안되어있거나 아래에 기술할 에러가 원인이 될 수 있다.

 

우선 접근 허용을 하는 방법에 대해서 알아보자.

 

우선 라파에 들어가 보자.

pi@raspberrypi:~ $ cd /etc/mysql/mariadb.conf.d

pi@raspberrypi:/etc/mysql/mariadb.conf.d $ sudo nano 50-server.cnf

 

해당 파일에 들어가 bind-adress가 적혀있는 코드를 주석처리 해주자.

#bind-address = 127.0.0.1

 

이렇게 해주면 외부 환경의 접속을 허용하게 된다.

 

이와같이 수정했는데도 에러가 발생한다면 아래의 방법을 추가적으로 적용해보자.

 

2. ERROR: 1698 (20000): Access denied for user '사용자명'@'localhost'

위의 에러 코드가 발생하는 원인은 다음과 같다.

  1. 접근할 때 비밀번호를 잘못 입력했다.
  2. 권한 설정이 잘못되었다.

1번과 2번의 경우 데이터가 없다는 가정 하에 기존 유저를 삭제하고 다시 생성한다면 해결된다.

root 계정에 비밀번호를 설정했다면 p 뒤로 입력하자(입력 안해도 비밀번호는 나중에 입력 가능하다)
mysql -u root -p

 

접속한 다음 유저를 목록을 조회한다.

 

위의 root2가 필자가 생성한 사용자이다.

 

만약 비밀번호를 설정하지 않았으면 다음과 같은 방법을 사용해 비밀번호를 설정해주자.

set password for '계정명'@'localhost'=password('사용할 비밀번호');

flush privileges;

 

 

혹시 그래도 안된다? 그러면 어쩔 수 없이 사용자를 삭제해줘야한다.

drop user '사용자명'@'localhost';

 

삭제가된 모습을 확인하고 새로운 사용자를 만들어주자.

create user '사용자명'@'%' identified by '비밀번호';

 위의 코드에서 %의 의미는 모든 IP 접속을 허용한다는 것이다. 이게 설정이 안되어있으면 외부에서의 접근이 불가능하다.

 

 

포트포워딩

이제 외부에서 들어오는 접근을 포트포워딩을 통해 DB로 연결시켜주자.

이 다음 외부에서 접속을 해주면 원활하게 DB에 접근이 가능할 것이다.

 

접근할 때 호스트명/IP란에 외부 IP 주소를 적어주고, 사용자란에 아까 생성한 사용자명을 입력, 암호에는 해당 사용자의 비밀번호를 작성해준다.

728x90