Работа с БД [mysql] расположенной на хосте на чистом API

задача такая:

  • есть на хостинге(timeweb) мой сайт с БД MySQL, мне необходимо подключиться к этой БД и поработать с ней. Использовать CLI не хочу, QT пока тоже не горю желанием, к boost еще не готов, очень хочется работать на "чистом API" с++. Собственно вопрос - как и с помощью чего это сделать?

Нашел статью о том, как работать через "mySQL Connector", но есть проблемы с "прикручиванием" этого инструмента для работы с БД (проблема с подключением заголовочных и исполняемых файлов) к VS 2019

Еще интересует вопрос - а разрешит ли хост(timeweba'a) мне подключаться к БД вообще? Не будет ли меня блочить какой-нить встроенный файрвол и т.д. при попытки подключения?

Если я правильно выбрал "mySQL Connector" для подключение к БД, просьба подтолкнуть меня к решению проблемы с подключением данного инструмента.


UPD: Получилось все же разобраться с MySQL Connector, но теперь не могу подключиться к БД, получается следующая ошибка:

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 пишет, что все нормально, я в whitelist'е, сам лично добавлял свой ip для данной БД в whitelist.


Ответы (1 шт):

Автор решения: Duracell

Все получилось, оказывается, если в БД не задан пароль, то при подключении к ней, сервер будет отказывать в правах, ибо пароля нет, и он, по умолчанию, при вызове функции с клиента на с++ будет подставляться как "0", сервер считает, что такой пароль не верный и не пускает "аттачится" к БД. Выхода два из этой ситуации:

1) Либо установить пароль на БД

2) Либо исправить на сервере или через filezilla (какой-нибудь) - ini файл с настройками БД

→ Ссылка