라즈베리파이로 웹 서버 만들기 (2) - 라파 DB 서버로 사용하기
프로젝트/소규모프로젝트들

라즈베리파이로 웹 서버 만들기 (2) - 라파 DB 서버로 사용하기

728x90

이번에는 라즈베리파이를 DB서버로 사용해 보자.

 

 

 

우선 라즈베리파이에 MySQL을 설치해야 한다.

 

 

 

 

 

먼저 mariadb를 설치해주자.

sudo apt-get update
sudo apt-get install mariadb-server

 

왜  MySQL을 사용한다고 했으면서 mariadb를 설치하는가 의문이 들어보면 아래글을 한번 읽어보면 좋을 것 같다!

 

https://sabarada.tistory.com/164

 

[database] mysql과 mariaDB 중 어떤 DB가 나에게 맞을까?

안녕하세요. 오늘은 mysql과 mariaDB에 대한 차이점을 알아보고 어떤것을 사용하면 개인에게 그리고 팀에게 적합할지 알아보는 시간을 가져보도록 하겠습니다. 히스토리 mariaDB는 mysql의 개발자가

sabarada.tistory.com

 

 

 

sudo mysql use mysql;

mysql에 접속한 후에 mysql 데이터베이스를 들어가보자.

 

 

select user, host, password from user;

해당 명령어로 여러 값들이 잘 나오는지 확인해보고 잘 나온다면

 

 

quit;

을통해 나가보자. DB자체는 잘 생성이 된 것이다.

 

 

이제 외부에서도 내 DB에 접속을 하기 위해서 권한을 열어줘야 한다.

 

 

 

create user '계정명'@'%' identified by 'password';

grant all privileges on *.* to '계정명'@'%';

flush privileges;

필자의 경우 계정명은 root2로 두었다.

grant와같은 명령어가 궁금하다면

 

 

https://dev.mysql.com/doc/refman/8.0/en/grant.html

 

MySQL :: MySQL 8.0 Reference Manual :: 13.7.1.6 GRANT Statement

13.7.1.6 GRANT Statement GRANT priv_type [(column_list)] [, priv_type [(column_list)]] ... ON [object_type] priv_level TO user_or_role [, user_or_role] ... [WITH GRANT OPTION] [AS user [WITH ROLE DEFAULT | NONE | ALL | ALL EXCEPT role [, role ] ... | role

dev.mysql.com

위 링크를 참조해서 한번 공부해보면 좋을 것 같다.

 

 

그다음 만약 mysql버전이 높다면 꼭 비밀번호를 특수문자, 대문자, 소문자, 숫자 모두가 섞여있도록 설정해줘야 한다.. 그렇지 않다면

 

 

다음과 같은 오류를 만나게 될 것이다...

 

 

 

그 다음 라즈베리파이에 들어가서

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

해당 파일에 들어가자.

 

#bind-address = 127.0.0.1

위와같은 부분이 있을텐데 해당 부분앞에 #을 붙여서 주석처리를 해주자. 이러면 외부 환경에서도 접속이 가능할 것이다.

 

 

 

그랬더니 필자한테는 오류가 떴다.

 

$ mysql -u root -p

위와같이 로그인을 시도하려 했는데

 

'ERROR 1698 (28000): Access denied for user 'root'@'localhost'

해당 에러가 뜨며 로그인이 잘 되지 않았다. 그럴땐 아래 방법을 참조해 보자.

 

 

$ sudo mysql -u root # sudo를 사용하여 root계정으로 mysql에 접속한다. 

mysql> USE mysql;
mysql> SELECT User, Host, plugin FROM mysql.user;

+------------------+-----------------------+
| User             | plugin                |
+------------------+-----------------------+
| root             | auth_socket           |
| mysql.sys        | mysql_native_password |
| debian-sys-maint | mysql_native_password |
+------------------+-----------------------+

위처럼 접속하면 plugin이 뜰텐데 필자는 이상하게 아무 plugin도 적혀있지 않았다.

 

mysql> update user set plugin='mysql_native_password' where user='root';

mysql> flush privileges;

mysql> select user, host, plugin from user;



+------------------+-----------------------+
| User             | plugin                |
+------------------+-----------------------+
| root             | mysql_native_password |
| mysql.sys        | mysql_native_password |
| debian-sys-maint | mysql_native_password |
+------------------+-----------------------+
mysql> exit;

Bye

다음과 같이 플러그인을 'mysql_native_password'로 바꿔주면 된다.

 

 

 

 

 

이제 한걸음 남았다!

 

저번 글의 포트포워드 페이지로 다시 가서

 

 

 

mysql은 3306 포트를 사용하기에 외부포트와 내부포트를 3306로 맞춰주어서 밖에서도 mysql을 접속할 수 있도록 설정해 주었다.

 

 

 

위에서 올린 값들을 차례대로 넣고 잘 접속이 되나 확인해보자 (필자는 HeidiSQL을 사용해서 접속해보았다.)

 

IP는 외부IP를 사용해야 하고, 사용자와 암호는 mysql의 것을 입력하면 된다.

 

데이터베이스란을 비워두어도 괜찮다. 

 

728x90