任务是这样的:
- 我在主机(timeweb)上有一个带有 MySQL 数据库的站点,我需要连接到该数据库并使用它。我不想使用 CLI,我也不想使用 QT,我还没有准备好提升,我真的想在“纯 API”c++ 上工作。实际上问题是 - 如何以及在什么帮助下做到这一点?
我找到了一篇关于如何通过“mySQL 连接器”工作的文章,但是在“拧”这个工具以使用数据库(连接头文件和可执行文件的问题)到 VS 2019 时存在问题
另一个问题是 - 主机 (timeweba) 是否允许我连接到数据库?内置的防火墙等会阻止我吗?尝试连接时?
如果我正确选择了“mySQL Connector”连接数据库,请催我解决连接这个工具的问题。
UPD:我仍然设法找出 MySQL 连接器,但现在我无法连接到数据库,我收到以下错误:
Access denied for user 'мой логин на хосте'@'мой ip адрес' (using password: YES)
代码如下:
int main()
{
MYSQL conn;
// Получаем дескриптор соединения
if (mysql_init(&conn) == NULL)
{
// Если дескриптор не получен – выводим сообщение об ошибке
std::cout << "Error\n";
}
else
{
std::cout << "mySQL initialize success\n";
}
// Подключаемся к серверу
if (!mysql_real_connect(&conn,"ip хоста из моего л/к", "мой логин на хосте", "мой пароль на хосте", "имя моей бд на хосте", 3306, 0, 0))
{
// Если нет возможности установить соединение с сервером
// базы данных выводим сообщение об ошибке
fprintf(stderr, "Error: can't connect to database - %s\n", mysql_error(&conn));
}
else
{
// Если соединение успешно установлено выводим фразу - "Success!"
fprintf(stdout, "Success!\n");
}
// Закрываем соединение с сервером базы данных
mysql_close(&conn);
}
我究竟做错了什么???timeweb 写道一切都很好,我在白名单上,我个人将我的这个数据库的 ip 添加到了白名单中。
一切顺利,原来如果数据库中没有设置密码,那么在连接它时,服务器会拒绝权限,因为没有密码,默认情况下,从客户端调用该函数时,
с++
它会替换为"0"
,服务器认为这样的密码不正确,不会让“附加”到数据库。有两种方法可以摆脱这种情况:1)在数据库上设置密码
2)要么在服务器上修复它,要么通过
filezilla
(一些)-带有数据库设置的ini文件