MySQL강좌18편: 원격지서버와 게시판(DB)공유를 위한 MYSQL설정법
작성자 정보
- 관리자 작성
- 작성일
컨텐츠 정보
- 2,703 조회
- 0 추천
- 목록
본문
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로 접속이 가능하다는 것을 알았다. 앞서 언급하였듯이 이러한 원격접속방법은 인터넷상에서 흔히 할 수 있는 “게시판공유”, “데이터공유”등에서 사용될 수 있다. 알아두면 굉장히 중요하게 사용될 수 있으므로 꼭 안아두기 바란다.
관련자료
-
이전
-
다음