pousees
439
2021-07-16 20:51:13
7
157

시놀로지에 웹사이트를 하나 올려봤는데, MariaDB 접속이 안되네요;;


마리아DB 외부에서 접속할 수 있도록 포트 다 뚫어놔서

3306으로 외부에서 접속할 수 있도록 해놨고


웹앱의 root-context.xml에 DNS주소로 DB설정 해놨는데...

분명 로컬에서 실행해도, 문제없고

DB접속은 외부주소로 접속하는거라서 상관없을거라 생각했습니다만...

war 배포해서 실행해보면, 

아래와 같은 오류가 발생하네요 ㅠㅠㅠ

아이피 주소가 시놀로지의  ip주소가 아니라,

192.168.0.1 <- 이렇게 되어있는게 맘에 걸리기는 한데, 뭐가 문제 일까요?

### Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (Could not connect: Access denied for user 'xxx'@'192.168.0.1' (using password: YES))
	org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:894)
	org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
	org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
0
  • 답변 7

  • pousees
    439
    2021-07-16 21:06:58

    외부에서 mysql워크밴치를 이용해서

    http://test.iptime.org:3306/test(예시) <- 이런식으로 접근해도 잘 접속되는걸로 봐서

    포트문제는 아닌거 같은데.... 왜 저런 에러가 뜨는걸까요???

  • 신히
    830
    2021-07-16 21:12:54

    192.168.0.1이 시놀로지가 IP가 아니라면 잘못 설정되어 있는거고요, 맞다면 해당 IP에 xxx 사용자의 접근허용을 등록 안해놓아서 오류가 나는것입니다.

  • pousees
    439
    2021-07-16 21:19:40

    신히 



    phpadmin에서 DB사용자에 시놀로지IP에 대해 권한을 다 준거 같은데... 이거 말고 더 해줘야하는게 있을까요?

  • pousees
    439
    2021-07-16 21:48:08

    시놀로지 어딘가에서 뭔가 잘못된거 같네요...

    외부 iptime.org로 들어가서 phpadmin 들어갈려고 하면 404 에러가 뜹니다.... 이거랑 연관이 있어보이네요

  • pousees
    439
    2021-07-16 21:48:57

    시놀로지 방화벽 문제는 아닌거 같고... 완전이 방화벽을 제거한 상태에서도 같은 에러가 뜹니다...

    그럼 포트가 문제라는걸까요??? ㅠㅠㅠ

  • pousees
    439
    2021-07-16 22:16:41

    내부시놀로지아이피로 phpmyadmin에는 접근이 되는데,

    외부시놀로지아이피(iptime.org)로 phpmyadmin에 접근하면 404 에러가 뜨네요...

  • 쿠잉
    4k
    2021-07-16 23:34:28

    1. 일단 외부에서 바로 접속 가능하도록 설정하는 것은 매우 위험 합니다.


    마리아DB 외부에서 접속할 수 있도록 포트 다 뚫어놔서
    3306으로 외부에서 접속할 수 있도록 해놨고


    2. 그래도 하고자 한다면 가장 쉬운 방법으로 계정의 대역대를 % 로 주는 것 입니다.

    id@%

    @ 뒤의 IP는 Source IP 입니다.

    예를 들어 내 PC의 IP가 192.168.56.10 이고 

    DB가 설치된 서버나 NAS 는 192.168.56.20 일 경우

    PC 에서 DB로 접속 하기 위해서는 계정을 

    ID@% 또는 ID@192.168.56.10  으로 생성 해야 합니다.


    그럼 생각해보면 외부에서 공유기에서 포트포워딩으로 해서 mysql 3306으로 접속하는 형태로 구성한다고 하였을 때

    외부에서 접속시 MySQL에서는 Client 를 어떤것으로 인지를 하게 될까요?


    외부에서 정상적으로 접속한다면 아래와 같은 흐름이 될 것 입니다.

    외부 IP : 123.123.123.123   -> 공유기 공인IP: 124.124.124.124

    -> 공유기의 내부IP 192.168.0.1 , 즉 내부 IP 중의 1 인 GW  -> MySQL IP 192.168.0.10: 3306


    외부에서 접속시 phpmyadmin이 404가 발생하는건 또 다른이슈 일것 같네요 어떻게 설정한지 모르겠으나

    virtualhost 를 사용한다면 그 부분 문제일 수도 있습니다.

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