我正在编写一个应该连接到 mysql 数据库的 c++ 程序。 当我使用本地数据库时它成功运行,但出现错误 “无法连接到‘192.168.0.111’ (111) 上的 mysql 数据库” 当我尝试连接到另一台计算机上的数据库时。 这是测试我的连接的功能:
void addb()
{
string mainServer="192.168.0.111";
string mainDbUser="root";
string mainDbPass="111";
MYSQL *connect; //database connection variable
connect=mysql_init(NULL);
if(!connect)
cout<<"Couldn't initiate connector\n";
if (mysql_real_connect(connect, mainServer.c_str(), mainDbUser.c_str(), mainDbPass.c_str(), "main" ,0,NULL,0))
{
cout<<" done\n";
}
else
{
cout<<mysql_error(connect)<<endl;
}
mysql_close (connect);
}
两台计算机都运行 Linux Mint 操作系统。 我尝试在第二台计算机上禁用我的防火墙,但我遇到了同样的问题。 注意:我可以通过网络浏览器使用 phpmyadmin 访问数据库。
最佳答案
确保防火墙允许数据库机器上的 MySQL 端口。
确保在 my.cnf 中加载了数据库,您具有正确的网络配置(以收听公共(public) IP)。
从错误消息来看——我怀疑这是一个防火墙问题——所以确保数据库机器防火墙允许传入通信(特别是——除了防火墙之外,SELinux 还启用它)并且发送机器允许传出通信到这台机器。
关于C++:无法连接到远程mysql数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22823334/