Qt подключение к БД, через интернет



  • Добрый день, хотел поинтересоваться. Написал приложение на Qt которое взаимодействует с БД (MySQl). Можно ли как то организвать подкk.чение приложение к данной БД, если БД будет на удаленном ПК (по интернету). Если да, то что для этого нужно сделать (куда выложить БД, или загрузить на серв) и как подключаться к ней в таком случае?



  • Ну из особых настроек - вам нужно на этом компьютере открыть доступ к портам mysql доступа, открыть можно разными способами, если у вас роутер - просто пробросить порт, если винда, то добавить правила в брандмауере, как в линусе я не знаю, ну и самое важно - как-то отсылать IP сервера клиенту, чтобы подключаться к серверу, делается это либо вручную, либо с помощью всяких сервисов типо dyndns можно привязать домен к динамическому IP . подключение происходит не сложнее, чем к локальной БД.

    ```QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
    db.setDatabaseName("Driver={MySQL ODBC 5.1 Driver};"
                      "Server=newton;Port=3306;"
                      "Database=test;User=test;Password=test");


  • Подключение к удаленной MySQL в интернете ничем не отличается от подключения к локальной бд.

    • покупаете хостинг - выбор нужно остановить на сервисе у которого в перечне услуг есть "удаленное подключение к БД"
    • размещаете базу данных
    • при активации услуги "удаленное подключение к БД" у вас попросят IP клиентского компьютера, если у вас динамический IP не забудьте предупредить администратора
    • собираете информацию о хосте, логине, пароле, + имя БД, порт 3308 - уточните у тех поддержки хостинга
    • (необязательно) проверяете подключение на какой-нибудь спец программе для управления БД, я использую MySQL Workbench
    • дальше пишите приложение, где указываете такое )
        QSqlDatabase db;
        db = QSqlDatabase::addDatabase("QMYSQL");
        db.setHostName("315.155.0.1");
        db.setDatabaseName("DataBase_Name");
        db.setPort(3308);
        db.setUserName("Login_To_DB");
        db.setPassword("Pass_From_DB");
        db.setConnectOptions("MYSQL_OPT_RECONNECT=TRUE;");
        db.open();
    

Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.