이번에는 라즈베리파이를 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의 것을 입력하면 된다.
데이터베이스란을 비워두어도 괜찮다.
'프로젝트 > 소규모프로젝트들' 카테고리의 다른 글
[express] 라즈베리파이 이미지서버 사용 (0) | 2023.08.18 |
---|---|
라즈베리파이로 웹 서버 만들기 (3) - 배포하기 (0) | 2023.01.27 |
라즈베리파이로 웹서버 만들기 (1) - 밖에서 라파 접속하기 (3) | 2023.01.24 |
mdx Editor만들기 (마크다운 에디터) (1) | 2022.11.27 |
JS_리액트_TodoList (0) | 2021.12.27 |