2012-09-07 1 views
0

C++ 프로그램을 사용하여 일부 데이터 조작을 수행하기 위해 Windows 호스트에서 연결해야하는 MySQL 데이터베이스를 실행하는 원격 Linux Mandriva 서버에서. 실제로, 다음 코드는 시작하는 것을 허용하지 않습니다 : 나는 원격 서버의 포트 3306을 열어C++에서 원격 MySQL RDBMS로 Linux Mandriva 서버에서 실행

... 
    MYSQL conn; 

    if(!mysql_init(&conn)) 
     std::wcout << "Error: can't create MySQL-descriptor" << endl; 

    if(!mysql_real_connect(&conn,"ip","user","password","dbname",0,0,0)) 
     std::wcout << "Error: can't connect to MySQL server" << endl;  

    if(mysql_query(&conn, "SELECT VERSION()") != 0) 
     std::wcout << "Error: can't execute SQL-query" << endl; 

... 

-

iptables -A INPUT -p tcp -m tcp --dport 3306 -j ACCEPT 
iptables save 
iptables restart 

오류 : 내가 가장 감사 할 것

Failed to connect to database:Error: Can't connect to MySQL server on 'ip_..' (10060) 

Linux에서 실행중인 원격 데이터베이스 서버에 연결하는 방법에 대한 정보.

+0

오류 메시지는 "오류 : MySQL 서버에 연결할 수 없습니다"및 "오류 : SQL 쿼리를 실행할 수 없습니다"입니다. –

+0

보충 정보를 얻으려면 질문을 더 잘 업데이트하십시오 (자신의 질문에 대한 의견을 말하면 조금 이상합니다). 예를 들어, 동일한 자격 증명을 사용하는 다른 응용 프로그램에서이 서버에 연결할 수 있습니까? –

+1

해당 컴퓨터에서 연결할 수 있는지 확인 했습니까? MySQL Workbench를 설치하고 코드를 찾기 전에 연결을 설정할 수 있는지 확인하십시오. 3306 (또는 귀하의 서버가 구성되어있는 서버를 사용하여) 0 대신에 포트를 사용해 볼 수도 있습니다 ... 그래, 나는 0이 괜찮다고 말하는 것을 알고 있지만 거짓말이라는 막연한 기억을 가지고 있습니다. – paddy

답변

1

당신은 (성공적인 mysql_init 다음) 모든 실패 테스트 후 mysql_error의 결과를 표시한다, 예컨대 :

if(!mysql_real_connect(&conn,"ip","user","password","dbname",0,0,0)) 
    std::wcout << "Error: can't connect to MySQL server:" 
       << mysql_error (&conn) << endl; 

그렇지 않으면 사용자가 그에게 무슨 일이 일어나고 있는지 이해 할 수 없습니다.

아마도 무슨 일이 일어나는지 알 수있을 것입니다. 그렇지 않은 경우 설명서를 살펴보십시오.

+0

동의합니다. 다음 연결 오류 : 데이터베이스에 연결하지 못했습니다 : 오류 : MySQL 서버에 '.... ip ..'(10060)에 연결할 수 없습니다. –

+0

감사합니다! 문제 해결됨. –

+0

다른 예 - http://www.mysql.ru/docs/man/mysql_real_connect.html –

관련 문제