3차원메트릭스
305
2018-01-18 10:51:53
8
1000

mysql에서 외부접속이 안되는 것에 대한 질문


mysql+php를 이용해서 웹 호스팅을 하고 있습니다. 개발을 하면서 여러 시도를 하다가 로컬 호스트에서 db에 대한 수정이 가능한데 외부에서는 불가능하다는 것을 보고 의문이 들어 여기에 올립니다. 


의문1)   간단하게 게임을 만들어 아이디와 비번을 사용자에게서 받아와 서버에 저장을 하는 것을 구현하는데 게임을 이용하는 이용자들은 ip가 다 다를 수 밖에 없습니다. 그런데 mysql은 외부접속을 거부한다고 알게 되었습니다.(예외적으로 한 개의 ip만 허용한다는 것도)  그렇다면 외부의 데이터를 어떻게 mysql에 저장을 할 수 있는 지에 대해 의문입니다.


의문2) 저 위에 mysql은 외부 접근이 불가능하다고 되어있습니다. 그런데 mysql+php를 이용한 그누보드만 보더라도 게시판에 이용자들이 게시판에 글을 쓰고 사진을 올리면 저장이 되고 삭제도 되는 것을 보았습니다. 그렇다면 외부 접근이 아닌 다른 방식으로 db를 수정하는 것이 있는 것인가에 대해 의문이 들게 되었습니다.


위에 올린 의문을 부분적라도 알고 계시다면  그 부분이라도 좋으니 알려주세요. db에 대해 이해를 해야할 것이 많아 많은 분들의 조언을 듣고 싶습니다.

조금씩 배워야하지만 의문이 강하게남아 여기에 올렸습니다. 감사합니다.


 

 

0
0
  • 답변 8

  • basscraft
    2k
    2018-01-18 11:00:16

    php + mysql 웹 어플리케이션에서 데이터를 접근 하는 것은 사용자가 직접 하는 것이 아닙니다.

    php 엔진에 mysql 접속 정보를 기술하고 php 서버로 부터 데이터에 접근을 하는 것이기 때문에 ip를 허용하려면 php 서버가 돌아가는 웹서버 ip만 허용하면 되는 것 입니다.


    MYSQL은 특이하게 유저 권한을 유저아이디 + 접근ip(대역) 으로 관리 합니다.

    말씀하진 대로 같은 유저로 여러 곳에서  접속 하려면 그만큼 유저를 생성하거나

    '193,168,100.*' 로 특정 대역을 하거나 ip에 '%' 를 넣어서 모든 대역을 설정 할 수 도 있습니다만

    보안상 비추입니다.

    1
  • 협군
    5k
    2018-01-18 11:03:32

    사용자들이 사이트에 접근해서 사용하는 것은 외부라고 보시면 되지만 그누보드 입장에서는 로컬입니다.

    개발된 프로그램이 어떻게 돌아가는지 전혀 짐작도 못하고 계시는 것 같습니다.

    1
  • 3차원메트릭스
    305
    2018-01-18 11:08:55

    그렇다면 사용자들이 던져주는 정보는 웹 서버에 저장이 되야되고 그곳에서 데이터를 불러와 mysql에 입력을 시키는 방식을 해야한다는 거죠?


    그렇다면 제가 호스팅을 구입한 곳에서 웹 서버가 따로 존재한다는 걸까요?

    https://www.youtube.com/watch?v=l1ZOj-ufZzc&t=242s 여기 유튜브에서는 mysql을 직접 접속하는 방식으로 알려줘서 웹 서버에 따로 저장을 하는 방안을 잘 모르겠습니다.


    닷홈에서 구입해서 웹서버가 뜨기는 하는데 어떻게 해야 할 지 모르겠습니다.. 
    웹서버 아이피

    223.xx.xxx.3

    -1
  • 협군
    5k
    2018-01-18 11:11:23

    개발자를 고용하시면 됩니다.

    1
  • 3차원메트릭스
    305
    2018-01-18 11:19:37

    개발을 하려고 질문을 드리는 겁니다 ㅠ 


    개발된 프로그램이 어떻게 돌아가는지 모른다는 지적이 맞는 것같습니다.


    조금씩 노력하여 알아야 할 것같습니다.


    그누보드 입장에서는 로컬로 취급한다는 것을 알려주셔서 감사합니다

    0
  • 3차원메트릭스
    305
    2018-01-18 11:38:53 작성 2018-01-18 11:39:15 수정됨

    <?

    $db_host="아이디.dothom.com "; //호스트네임(IP 값으로 가능) 아이디.dothom.com 을 넣음

    $db_user="id_root";  //사용자 아이디값

    $db_password= "1234"; //비번

    $db_name= "test"; //데이터베이스 이름


    $conn =mysqli_connec($db_host,$db_user,$db_password) or die(~~블라블라~)

    mysql_select_db($db_name,$conn); //db 선택

    //연결

    //생략

    ?>

    제가 youtube를 통해서 배운 php로 database에 값을 전달하는 방식입니다.

    윗분들의 말을 제가 이해 한게 맞다면  다른 이용자의 정보를 각기 다른 ip에서 전송을 하려면 

    $db_host="아이디.dothom.com ";  은  mysql의 로컬이므로 접근이 안되니

    $db_host의 값에  따로 구축한 웹서버의 ip를 넣어주어 거기다 보내야 한다는 것이 

    맞나요?



    0
  • 협군
    5k
    2018-01-18 11:41:16

    웹 서버의 프로그램이 동작하는 것은 사용자의 컴퓨터가 아니라 서버 입니다.

    서버 입장에서 DB 가 같은 서버에 있다면 localhost 이니까 localhost 를 쓰면 됩니다.



    ㅡㅡ

    0
  • 3차원메트릭스
    305
    2018-01-18 11:49:13

    아하!!!!! 이제 이해가 되었습니다!!!!!!!!


    진짜 감사합니다!

    0
  • 로그인을 하시면 답변을 등록할 수 있습니다.