【问题标题】:Is MySQL C++ Connector access to remote database possible?MySQL C++ 连接器可以访问远程数据库吗?
【发布时间】:2009-09-11 15:33:08
【问题描述】:

我正在使用 MySQL C++ 连接器访问 C++ 应用程序中的 MySQL 数据库。如果我在同一台机器上安装 C++ 和 MySQL,它就可以正常工作。所以,类似下面的代码可以正常工作:

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");

这是不可能的还是我做错了什么?

【问题讨论】:

  • 远程机器是否正确转发了 MySQL 的端口,并允许您尝试连接的用户进行远程连接?
  • 我已经转发了端口。请参阅格伦的答案。我将数据库设置为仅用于本地访问。一旦我改变了它,它就起作用了!

标签: c++ mysql database mysql-connector


【解决方案1】:

您是否不小心将您的用户设置为只能从本地计算机访问您的数据库?

你做了吗

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

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

如果您是第一个,那么您将无法从其他计算机登录。

您是否也正确授予了权限?

请参阅 MySQL docs 以获得有关如何正确执行此操作的更深入说明

【讨论】:

    【解决方案2】:

    我已通过 VPN 完成此操作,因此我认为这是可能的。您使用的端口是否正确?

    【讨论】:

    • 我正在使用相同的端口,并且我从路由器转发到具有 MySQL 数据库的机器。我尝试在同一个 LAN 上使用两台机器并使用 LAN 的 IP 地址,例如192.168.0.2。那也没用。
    猜你喜欢
    • 1970-01-01
    • 2011-11-17
    • 1970-01-01
    • 1970-01-01
    • 2010-12-14
    • 1970-01-01
    • 1970-01-01
    • 2011-12-06
    • 2018-11-06
    相关资源
    最近更新 更多