2012-09-07 35 views
0

在运行MySQL数据库的远程Linux Mandriva服务器上,我需要从Windows主机连接到使用C++程序执行一些数据操作。实际上,下面的代码不会让它开始:从C++连接到运行在Linux Mandriva服务器上的远程MySQL RDBMS

... 
    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; 

... 

我在远程服务器上打开端口3306 -

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 –

相关问题