2012-01-10 1 views
0

하나의 호스트가있는 웹 서버가 있는데 다른 호스트에서 데이터베이스를 사용하고 싶습니다. 나는이 작업을 수행하기 위해 포트 포워딩을 사용하고 싶습니다, 이미 다른 사람이 확인하는 방법 말해 줄 수 있다면원격 서버에 mysql_connect와 함께 포트 포워딩과 PHP 사용

이 제대로 작동하는 것 같군
ssh -P -fg -L23307:myserver.net:3306 [email protected] sleep 1d 

것은 (비록에게, 즉 좋은 것 사용하여 전송 포트를 설정 한),하지만 그 포트를 통해 MySQL에 연결하는 PHP를 얻을 수 없습니다 - 그것은 (실행되지 않습니다) 자체 로컬 MySQL 데이터베이스에 연결하려고 계속.

$mlink = mysql_connect("localhost:23307", "myusername", "mypassword"); 
mysql_select_db('mydatabase', $mlink) or die ("Error - cannot connect to database localhost:23307.<br />Error: ".mysql_error()); 

자세히 알 수 있듯이 나는 복잡한 작업을 수행하지 않으므로 왜 로컬 연결을 계속 시도합니까?

+0

mysql 클라이언트 유틸리티를 사용 해보고, 실패하면 호스트에'telnet '하고 리스닝하는 것이 있는지 확인하십시오. – mindas

답변

1

그래서 "방화벽에서 포트를 열었을 때 사람들을 신뢰하지 마십시오."라는 대답이 나왔습니다.

누구나 직업을 원하십니까?

0

나는 똑같은 문제에 직면했다. 그러나 방화벽 문제는 발생하지 않았습니다. 실제로 SSH 터널링을 수행 할 때 방화벽 설정을 변경할 필요가 없습니다.

mysql_connect() 매개 변수 목록에서 'localhost'를 '127.0.0.1'로 변경하여 해결했습니다. refernce를 링크 - https://blog.rjmetrics.com/2009/01/06/php-mysql-and-ssh-tunneling-port-forwarding/

발췌 -

그것은 돈을 지불 우리의 노력을 모두 볼 수있는 시간 MySQL의

를 통해 연결합니다. 우리의 로컬 컴퓨터에서, 우리는 간단하게 다음 명령을 실행

$ mysql을 -u sqluser -p -h 127.0.0.1 -P MySQL의 호스트가 같은 인 127.0.0.1이라고 3307

공지 사항 원격 서버의 my.cnf 파일에 바인드 주소 값. 궁극적으로 전달 된 TCP 포트에 액세스하고 있기 때문에 localhost가 아닌이 값을 사용하는 것이 중요합니다. localhost를 지정하면 MySQL이 TCP를 모두 무시하고 로컬 소켓을 통해 로컬 서버에 연결됩니다. 따라서 우리는 연결을 위해 포트 3307을 지정했습니다. 이것이 우리가 포워딩하는 TCP 포트입니다.