2009-09-11 113 views
0

我正在使用MySQL C++连接器访问C++应用程序中的MySQL数据库。如果我在同一台机器上拥有C++和MySQL,它工作正常。所以,像下面的代码工作正常:MySQL C++连接器可以访问远程数据库吗?

sql::Connection    *_con; 
sql::mysql::MySQL_Driver *_driver; 
_driver = sql::mysql::get_mysql_driver_instance(); 
_con = _driver->connect("tcp://127.0.0.1:3306", "user", "password"); 

但是,我似乎无法访问数据库,如果它位于另一台机器上。所以,这样的事情:

sql::Connection    *_con; 
sql::mysql::MySQL_Driver *_driver; 
_driver = sql::mysql::get_mysql_driver_instance(); 
_con = _driver->connect("tcp://somesite.com:3306", "user", "password"); 

难道只是不可能或我做错了什么?

+0

是否在远程机器已在端口转发的MySQL正确,并且允许你尝试连接用户远程连接? – Drakia 2009-09-11 15:37:12

+0

我有端口转发。看到格伦的回答。我只有本地访问数据库。一旦我改变了它,它就起作用了! – zooropa 2009-09-11 18:00:35

回答

3

您是否意外设置了用户,以便他们只能从本地机器访问您的数据库?

你做

create user 'user'@'127.0.0.1' ... 

create user 'user'@'%' .... 

如果你做的第一,那么你将不能够从不同的机器上登录。

您是否也正确授予特权?

见MySQL的docs关于如何做到这一点更深入的解释正确

+0

这工作!谢谢! – zooropa 2009-09-11 18:03:55

+0

非常有帮助谢谢 – pyCthon 2012-10-07 19:57:18

1

我已经通过VPN完成了这项工作,所以我认为这是可能的。你使用的端口是否正确?

+0

我正在使用相同的端口,并且我使用MySQL数据库从路由器转发到机器。我试着用同一个LAN上的两台机器并使用LAN的IP地址,例如, 192.168.0.2。那也行不通。 – zooropa 2009-09-11 15:38:33