Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. How to connect database to online service
Forum Updated to NodeBB v4.3 + New Features

How to connect database to online service

Scheduled Pinned Locked Moved Solved General and Desktop
28 Posts 4 Posters 5.0k Views 3 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • Thank YouT Thank You

    @mrjj

    if it's not a home setup then you most likely also have a DNS server

    It's home server. A router that we use for normal purpose.
    With this I want to host this database to other users connected to the same router.

    mrjjM Offline
    mrjjM Offline
    mrjj
    Lifetime Qt Champion
    wrote on last edited by
    #19

    It's home server. A router that we use for normal purpose.

    Ok. you can most likely make it assign a fixed ip to the server so it never changes.
    If it cant directly, you can often change the range of ips it will give out and
    then use an ip outside of this range and hence keep it.

    • With this I want to host this database to other users connected to the same router.

    Wait ? from outside ? Like from the internet ?

    Thank YouT 1 Reply Last reply
    0
    • Thank YouT Thank You

      @mrjj
      Yes, I actually got success after seeing this thing for almost day.

         db.setDatabaseName("users");
         db.setPort(9906);
      // It  is 9906 because I changed from 3306 to 9906 before some time due to some errors
         db.setHostName("192.168.100.4");
         db.setUserName("host");
         db.setPassword("");
      

      I first did what you said

      changed to 9906(port)

      And I got the error
      322a9fd6-006e-401a-8c2e-4e15d0675ce2-image.png

      Then I created new privileges to all address

      Now It's finally done!

      Ok I made it work but Are there security risks in this situation(simple only) ?
      Another question for you

      Will private IP change overtime.

      If so there will be problem because the database won't be hosted if IP changes.
      Am I right?. Or
      It will be hosted on the same port?

      SGaistS Offline
      SGaistS Offline
      SGaist
      Lifetime Qt Champion
      wrote on last edited by
      #20

      @Thank-You said in How to connect database to online service:

      Then I created new privileges to all address

      Depending on how you did that you allowed user from anywhere to connect to your database which might not be what you want.

      Interested in AI ? www.idiap.ch
      Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

      Thank YouT 1 Reply Last reply
      1
      • SGaistS SGaist

        @Thank-You said in How to connect database to online service:

        Then I created new privileges to all address

        Depending on how you did that you allowed user from anywhere to connect to your database which might not be what you want.

        Thank YouT Offline
        Thank YouT Offline
        Thank You
        wrote on last edited by
        #21

        @SGaist

        PRIVILEGES ON *.* FROM 'host'@'%';
        

        It is shown while I was updating
        I am sorry I did it with PHPMYADMIN So I don't know syntax much of this thing

        CREATE USER 'demo'@'%' IDENTIFIED VIA mysql_native_password USING '***';
        GRANT ALL PRIVILEGES ON *.* TO 'demo'@'%' REQUIRE NONE WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;
        GRANT ALL PRIVILEGES ON `users`.* TO 'demo'@'%'; 
        

        I recreated another one for showing.

        Let's make QT free or It will go forever

        TRUE AND FALSE <3

        1 Reply Last reply
        0
        • mrjjM mrjj

          It's home server. A router that we use for normal purpose.

          Ok. you can most likely make it assign a fixed ip to the server so it never changes.
          If it cant directly, you can often change the range of ips it will give out and
          then use an ip outside of this range and hence keep it.

          • With this I want to host this database to other users connected to the same router.

          Wait ? from outside ? Like from the internet ?

          Thank YouT Offline
          Thank YouT Offline
          Thank You
          wrote on last edited by
          #22

          @mrjj said in How to connect database to online service:

          Wait ? from outside ? Like from the internet ?

          No, Just within the network only.
          Like how you use WIFI. (Available to only peoples in the LOCAL NETWORK)

          If you didn't understand this,
          Let me give an example

          Suppose I am connected to the WIFI(router). And you are also connected to the same wifi. I have hosted the database. You can use this database only if you are connected to the same wifi/router that I have hosted into. You are not allowed to access this outside of this network. If you get disconnected with network I won't be able to connect with it.

          I hope you understands

          Let's make QT free or It will go forever

          TRUE AND FALSE <3

          mrjjM 1 Reply Last reply
          0
          • Thank YouT Thank You

            @mrjj said in How to connect database to online service:

            Wait ? from outside ? Like from the internet ?

            No, Just within the network only.
            Like how you use WIFI. (Available to only peoples in the LOCAL NETWORK)

            If you didn't understand this,
            Let me give an example

            Suppose I am connected to the WIFI(router). And you are also connected to the same wifi. I have hosted the database. You can use this database only if you are connected to the same wifi/router that I have hosted into. You are not allowed to access this outside of this network. If you get disconnected with network I won't be able to connect with it.

            I hope you understands

            mrjjM Offline
            mrjjM Offline
            mrjj
            Lifetime Qt Champion
            wrote on last edited by
            #23

            @Thank-You
            Ah
            Ok super. That will work fine then.
            Yes I understand fully :)

            If you know the 10 clients pc. you can take their mac address and
            tell the router to only allow those MAC addresses to the MySQL port.
            That will block all others-

            Thank YouT 2 Replies Last reply
            1
            • mrjjM mrjj

              @Thank-You
              Ah
              Ok super. That will work fine then.
              Yes I understand fully :)

              If you know the 10 clients pc. you can take their mac address and
              tell the router to only allow those MAC addresses to the MySQL port.
              That will block all others-

              Thank YouT Offline
              Thank YouT Offline
              Thank You
              wrote on last edited by
              #24

              @mrjj

              well if the IP changes then the clients cant find the server anymore.

              As you said this, So I allowed every IP. It can change at anytime

              72a3c95b-d3f1-4d7c-b2c0-c4cf034b836a-image.png

              tell the router to only allow those MAC addresses to the MySQL port.

              I didn't found any place to write MAC address here.

              Some people on the network (other that people accessing the database can still access the internet and any things)

              OR
              Do you mean to block other MAC address(other than 10)

              Let's make QT free or It will go forever

              TRUE AND FALSE <3

              1 Reply Last reply
              0
              • mrjjM mrjj

                @Thank-You
                Ah
                Ok super. That will work fine then.
                Yes I understand fully :)

                If you know the 10 clients pc. you can take their mac address and
                tell the router to only allow those MAC addresses to the MySQL port.
                That will block all others-

                Thank YouT Offline
                Thank YouT Offline
                Thank You
                wrote on last edited by
                #25

                @mrjj

                tell the router to only allow those MAC addresses to the MySQL port.

                Oh! maybe I didn't understand it.

                Do you mean giving access to certain mac address in ROUTER itself?

                Something like these
                https://www.snbforums.com/threads/how-to-restrict-open-port-access-to-certain-mac-addresses.7528/
                https://community.cisco.com/t5/switching/limit-ports-access-for-particular-mac-addresses-only/td-p/723845

                Let's make QT free or It will go forever

                TRUE AND FALSE <3

                mrjjM 1 Reply Last reply
                0
                • Thank YouT Thank You

                  @mrjj

                  tell the router to only allow those MAC addresses to the MySQL port.

                  Oh! maybe I didn't understand it.

                  Do you mean giving access to certain mac address in ROUTER itself?

                  Something like these
                  https://www.snbforums.com/threads/how-to-restrict-open-port-access-to-certain-mac-addresses.7528/
                  https://community.cisco.com/t5/switching/limit-ports-access-for-particular-mac-addresses-only/td-p/723845

                  mrjjM Offline
                  mrjjM Offline
                  mrjj
                  Lifetime Qt Champion
                  wrote on last edited by
                  #26

                  @Thank-You
                  Hi
                  Yes in the router.
                  so only the approved one can access the server. and not anyone on the same network.
                  If it makes sense ofc.

                  Thank YouT 1 Reply Last reply
                  0
                  • mrjjM mrjj

                    @Thank-You
                    Hi
                    Yes in the router.
                    so only the approved one can access the server. and not anyone on the same network.
                    If it makes sense ofc.

                    Thank YouT Offline
                    Thank YouT Offline
                    Thank You
                    wrote on last edited by
                    #27

                    @mrjj
                    If I use only one router I will do as you said
                    I am thinking of using new router just for this purpose. And giving connection to only very specific device. So it will be faster and easier also.

                    Let's make QT free or It will go forever

                    TRUE AND FALSE <3

                    1 Reply Last reply
                    0
                    • Thank YouT Offline
                      Thank YouT Offline
                      Thank You
                      wrote on last edited by
                      #28

                      This is Just answer compiled from all answers here.
                      Special thanks to @mrjj and @SGaist

                      Each app is a mysql client so each would have its own connection to the DB. a JS "app" would be running at a server and that server is the mysql client for all
                      browsers showing the pages.
                      Xampp is great but does your local server also need a web server?

                      ONE WAY IS

                      The easiest way to have a server is a virtual one.
                      One way is to use dockers.
                      https://www.docker.com/
                      and then download a predefined setup
                      https://hub.docker.com/r/mysql/mysql-server

                      Another WAY IS

                      For configuring Xampp for hosting

                      • Go to Your XAMPP Control panel
                      • Click on apache > config > Apache (httpd.conf)
                        9222520c-f3a4-43cb-bf56-c518e9b85cea-image.png
                      • Search for Listen 80 and replace with Listen 8080
                      • After that check your local ip using ipconfig command (cmd console)
                      • Search for ServerName localhost:80 and replace with your local ip:8080 (ex.192.168.1.156:8080)
                        After that open apache > config > Apache (httpd-xampp.conf)
                        759b2983-88f8-4afd-9476-b9c43c20ef70-image.png
                      Search for
                      
                         <Directory "C:/xampp/phpMyAdmin">
                             AllowOverride AuthConfig
                             **Require local**   Replace with   **Require all granted**
                             ErrorDocument 403 /error/XAMPP_FORBIDDEN.html.var
                         </Directory>```
                      
                      • Go to xampp > config > click on service and port setting and change apache port 8080
                      • restart xampp
                      • then hit your IP:8080 (ex.192.168.1.156:8080) from another computer

                      In any case, you have to take another thing into account, if you want to connect to your database through the internet, you should really consider implementing a proper service that will shield the database from the internet.

                      6d90fbf9-7604-4f47-8a39-62ae625f1a47-image.png

                      If You get this error Then You have got the privileges problem

                      Create new privileges with All accessed or certain IP

                      CREATE USER 'demo'@'%' IDENTIFIED VIA mysql_native_password USING '***';
                      GRANT ALL PRIVILEGES ON *.* TO 'demo'@'%' REQUIRE NONE WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;
                      GRANT ALL PRIVILEGES ON `users`.* TO 'demo'@'%'; 
                      

                      try with port 3306.

                      You are using port 8080 for
                      db.setPort(8080);

                      but is that not the port the web server uses ?
                      so while 192.168.100.4:8080/phpmyadmin Works, that is the port the web server answers
                      and not to mysql clients.

                      Also make sure port 3306 is not blocked by windows firewall.

                      • Will private IP change overtime.

                      Yes. if done by the local DHCP server then yes unless some IT dude promised you
                      it would not. You can be lucky that it will get the same IP for a long time.

                      • If so there will be problem because the database won't be hosted if IP changes.

                      well if the IP changes then the clients cant find the server anymore.

                      Be Happy , You are done now 🤘🤘

                      Let's make QT free or It will go forever

                      TRUE AND FALSE <3

                      1 Reply Last reply
                      1

                      • Login

                      • Login or register to search.
                      • First post
                        Last post
                      0
                      • Categories
                      • Recent
                      • Tags
                      • Popular
                      • Users
                      • Groups
                      • Search
                      • Get Qt Extensions
                      • Unsolved