2009-09-11 92 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