강좌
클라우드/리눅스에 관한 강좌입니다.
데이터베이스 분류

MySQL강좌18편: 원격지서버와 게시판(DB)공유를 위한 MYSQL설정법

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

MySQL강좌18: 원격지서버와 게시판(DB)공유를 위한 MYSQL설정법

원격지에있는 서버에 설치된 MYSQL데이터베이스로 접속하거나 데이터를 select, update등의 작업을 하려면 어떻게 해야할까?

 

위의 질문은 다음과 질문으로 귀결될 수 있다.

 

“MYSQL DB 데이터를 원격지에서 직접 조작하려면 DB내의 설정을 어떻게 해야할까?”

 

위의 질문에 대한 실제 상황은 다음과 같은 것들이 있을 것이다.

 

   . 서로다른 웹사이트에서 게시판을 공유하고자 할 경우

   . 원격지의 서버에서 ODBC를 통해 MYSQL DB의 데이터를 조작하려고 할 경우

 

이런 일들이 가능하도록 설정하기 위해 서버관리자가 설정해야할 MYSQL 설정내용들에 대해서 알아보도록 하겠다. 예를들어 super라는 DB를 원격지에서 조작 가능하도록하고자 할 경우에는 다음과 같은 3가지의 설정이 되어있어야 한다.

 

첫번째 설정 : mysql db테이블의 host 컬럼이 ‘%’로 설정되어있어야 한다.
              (
특별히 지정된 한 곳에서만 접속한다면 이곳에 ip주소를 줘도 된다.)

 

두번째 설정 : mysql user테이블의 host컬럼이 ‘%’으로 설정되어야 한다 .

(특별히 지정된 한 곳에서만 접속한다면 이곳에 ip주소를 주셔도 된다.)

 

세번째 설정 : 특별한 접속권한을 다음과 같이 해줘야한다.

              grant all on super.* to super@192.168.0.231;

 

위의 의미가 조금 추상적으로 느껴질 것 같아서 간단히 예를들어 보겠다. DB생성과 DB사용자생성에 대해서는 앞절에서 충분히 설명했으므로 여기서는 원격지의 데이터조작에 대한 부분에 맞추어 설명하겠다.  먼저, root권한으로 접속한다.

 

[root@sulinux data]#/usr/local/mysql/bin/mysql -u root -p mysql

Enter password:

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 3

Server version: 5.1.32-log Source distribution

 

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

 

mysql>

 

super_db라는 데이터베이스를 다음과 같이 생성한다.

 

mysql> create database super_db;

Query OK, 1 row affected (0.00 sec)

 

mysql>

 

다음으로 DB테이블에 생성한 데이터베이스(super_db)를 등록한다.

 

mysql> insert into db values('%','super_db','super','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y',

'Y','Y','Y','Y','Y','Y','Y','Y','Y');

Query OK, 1 row affected (0.00 sec)

 

mysql>

 

앞에서 데이터베이스를 DB테이블에 등록할 경우의 host 필드에는 localhost로 등록했었다. 하지만 지금 생성하는 데이터베이스(super_db)는 원격지에서 접속하여 데이터를 조작하도록 해야하기 때문에 %’라고 설정한 부분을 주의깊게 보기 바란다.

 

만약, 특정한 하나의 호스트에서만 접속이 이루어진다면 이 부분에 ‘%’를 대신해서 ‘192.168.0.231’등과 같이 해당 호스트의 IP주소를 지정해도 된다.

 

그리고 USER테이블에 이 데이터베이스(super_db)를 사용할 사용자를 생성한다.

 

mysql> insert into user values('%','super',password('11111111'),'N','N','N','N','N','N','N',

'N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','1','',

'','','','','','');

Query OK, 1 row affected, 4 warnings (0.00 sec)

 

mysql>


DB
테이블과 마찬가지로 현재 생성한 데이터베이스를 사용할 사용자는 원격지에서 접속할 것이므로 USER테이블의 host필드에는 예전처럼 ‘localhost’가 아니라 ‘%’로 설정하였음을 주의깊게 보기바란다. 이 또한 DB테이블과 마찬가지로 특정한 한곳에서만 super라는 MYSQL사용자가 접속한다면 ‘%’가 아닌 ‘192.168.0.231’등과 같이 특정한 IP주소로 설정하면 된다. 참고로 여기서 설정한 %에 대한 간단한 표현예는 다음과 같다.

 

예를들어 "192.168.0.xxx"에서의 모든접속을 허용하려면 "192.168.0.%"로 설정하면 된다.

 

마지막으로 이 사용자가 접속할 원격지의 IP주소에 대한 접속권한을 부여한다.

 

mysql> grant all on super.* to super@192.168.0.231;

Query OK, 0 rows affected (0.00 sec)

 

mysql>

 

이 설정의 의미는 다음과 같다. 192.168.0.231이라는 곳에서 super라는 MYSQL사용자는 super_db라는 데이터베이스로 접속에 대한 모든 권한을 부여한 것이다. 이상과 같이 설정이 되어있다면 지정된 원격지(192.168.0.231)에서 super라는 계정으로 super_db라는 데이터베이스로의 접속 및 데이터조작이 가능하게 된다.

 

다음은 192.168.0.231서버에서 MYSQL이 설치되어있는 192.168.0.250서버로 원격접속을 하는 예이다.

 

[root@sulinux ~]#/usr/local/mysql/bin/mysql -u super -p super_db -h 192.168.0.250 -P 3306

Enter password: ********

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 18

Server version: 5.1.32-log Source distribution

 

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

 

mysql>

mysql> show tables;

Empty set (0.00 sec)

 

mysql>

 

이렇게하여 원격지서버에 설치되어있는 MYSQL로 접속이 가능하다는 것을 알았다. 앞서 언급하였듯이 이러한 원격접속방법은 인터넷상에서 흔히 할 수 있는 게시판공유”, “데이터공유등에서 사용될 수 있다. 알아두면 굉장히 중요하게 사용될 수 있으므로 꼭 안아두기 바란다.

 

 

 

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,157 명
  • 현재 강좌수 :  36,515 개
  • 현재 접속자 :  234 명