본문 바로가기
개발/R.Pi3 + Linux

[R.Pi + Linux] Raspberry Pi3 HeidiSQL 접속 설정하기(DB 외부 접속)

by 똘똘이박사 2017. 1. 25.

· 최초작성 : 2015. 11. 03.

최종수정 : 2017. 01. 26.

· 작성/수정내용 :

  - HeidiSQL 설치 및 원격 접속 하기




시작하기에 앞서


손도 시렵고 발도 시렵고... 이번 겨울은 너무 추운거 같아요...

 테스트 설정

 - Raspberry pi3 2017.01.11 업데이트



# HeidiSQL 설치 및 원격 접속 하기


이전 포스팅에서 MariaDB를 설치해 보고 

간단히 데이터도 조회를 해보았습니다.



HeidiSQL 같은 GUI툴을 사용하면 데이터를 좀더 편하게 볼 수 있다는 것도 잠깐 언급했었죠

그런데 사실 GUI툴을 단순히 가독성이 높다는 이유로 사용하지많은 않습니다.

여기에는 개발시 굉장히 유요한 기능들이 많이 들어있습니다.

HeidiSQL은 사실 처음 사용해보는 툴이라 그런 모든 유용한 기능이 들어 있는지는 모르겠지만

우선 원하는 결과를 어렵지 않게 확인 할 수 있는 무료툴 중에 괜찮은 제품인것 같네요



HeidiSQL 설치하기


우선 HeidiSQL 을 다운로드 받아 설치해 보기로 하겠습니다.


HeidiSQL은 아래의 경로에서 다운로드 받을 수 있습니다.


http://www.heidisql.com/




위의 주소로 접속하셔서 다운로드 받으시면 됩니다.


이 포스팅에서 설치에 대한 모든 내용을 다루지는 않으려고 합니다.

설치는.... 그냥... 뭐... Next 버튼만 클릭하다 보면 어느새 끝나있더라구요..

그리고 다른 분들의 포스팅에 자세히 나와있는 것이 많아 전 스킵하도록 하겠습니다.





HeidiSQL로 MariaDB 원격접속해 보기


HeidiSQL을 설치하고 처음 실행하면 아래와 같은 화면을 만나게 됩니다.



현재 처음 사용해 보는 것이고 연결한 적이 없기 때문에 설정파일도 없고 아무것도 없습니다.


좌측의 세션이름 부분을 우클릭 하여 '새 세션'을 선택하거나 좌측 하단의 [신규] 버튼을 클릭하여

R.Pi3에 설치한 MariaDB에 연결 정보를 입력할 세션을 만듭니다.





전 세션의 이름을 'Pi MariaDB' 라고 지었습니다.

'호스트명/IP' 에는 MariaDB가 설치되어 있는 R.Pi 의 주소를 적어 줍니다.

그리고 설치 할 때 입력했던 root 계정의 정보를 입력합니다.

(저희는 설치하고 나서 다른 유저를 추가하지 않아서 바로 root 로 접속 하려고 합니다.)






모든 정보를 다 입력하고 [열기] 버튼을 클릭하면

깔끔히 접속이 되리라던 기대와는 달리 아래 그림과 같은 에러를 만나게 됩니다.


Can't connet to MySQL server on '192.168.0.3' (10061)




내용인 즉.. 서버쪽에 접속 관련 보안 설정이 되어 있지 않기 때문입니다.


그럼 이제 MariaDB가 설치되어 있는 R.Pi의 설정을 살펴보겠습니다.





MariaDB 원격접속 설정하기



우선 터미널로 R.Pi에 접속하여 MariaDB 까지 접속합니다.

그리고 mysql 데이터베이스에 있는 user 테이블에서 root 계정에 대한 정보를 확인해 보도록 합니다.




지난번에도 살펴본 user 테이블은 MariaDB 사용자들에 대한 정보를 가지고 있습니다.

위의 그림은 그 정보중 현재 등록되어 있는 사용자의 ID와 host(접속주소)를 조회하는 부분입니다.


현재 로서는 root 계정으로 MariaDB에 붙을 수 있는 곳은 R.Pi 자신 밖에 없습니다.

127.0.0.1, : : : 1, localhost, raspberrypi 는 모두 MariaDB가 설치되어 있는 R.Pi를 가리킵니다.


그럼 외부에서 원격으로 접속할 수 있도록 user 테이블에 추가를 해줘야 겠네요

방법은 2가지가 있습니다.


첫번째 방법은 권한 생성 명령을 사용하여 접속 권한을 생성하는 것이고

두번째는 insert 쿼리를 사용하여 user 테이블에 바로 데이터를 넣어 주는 것입니다.


전 권한 접속 명령어를 사용하여 접속 권한을 생성하는 방법으로 진행해 보도록 하겠습니다.


MariaDB [mysql]> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '비밀번호';

MariaDB [mysql]> FLUSH PRIVILEGES;


GRANT 문에서 *.* 의 의미는 '데이터베이스명' . '테이블명' 입니다.

따라서 위 구문은 '모든 데이터베이스의 모든 테이블' 을 사용하겠다는 의미 입니다.


To 다음에 나오는 부분이 root 계정의 접속 권한인데 @뒤에 '%' 의미는 '모든 주소' 입니다.

따라서 root는 모든 주소로 부터 접속이 가능하다 라는 의미이며, 특정 주소에서만 접속 하게 하고 싶다면

% 대신 IP 주소를 입력 하면 됩니다.



그리고 다시 조회해 보면 가장 위에 방금 권한 설정한 내용이 보입니다.


아직 끝난것이 아닙니다.


그리고 이번에는 MariaDB의 환경 설정 자체를 수정해 줘야 할 필요가 있습니다.


/etc/mysql/my.cnf  파일을 수정해 줘야 합니다.


vi 편집기로 my.cnf 파일을 열고


내용중에 bind-address 값을 0.0.0.0 으로 수정해 줍니다.



그리고 내용을 저장한 다음 MariaDB를 재시작 합니다.


참고로 MariaDB의 서비스 포트는 3306 입니다.

이 포트를 수정하려면 my.cnf 에서 [mysqld] 아래에 있는 port 를 수정하시면 됩니다.


이제 거의 끝났습니다.


마지막으로 방화벽 설정을 해줘야 합니다.


# sudo iptables -A INPUT -p tcp --dport 3306 -j ACCEPT

# sudo iptables -A OUTPUT -p tcp --dport 3306 -j ACCEPT

# sudo iptables-save



이제 원격에서 MariaDB를 접속할 준비가 모두 끝났습니다.


다시 HeidiSQL로 돌아와서

[열기] 버튼을 눌러 봅니다.


그럼 짠~~~ 하고 아래와 같이 접속 되는것을 보실 수 있습니다.





반응형