Partage
  • Partager sur Facebook
  • Partager sur Twitter

[GOOGLE-APPS-SCRIPT] Erreur de connexion BDD

Sujet résolu
    15 septembre 2022 à 19:37:56

    Bonjour.

    Depuis plusieurs jours, je rencontre cette erreur "Failed to establish a database connection" quand je tente de connecter ma base de données MySQL à mon fichier Google Sheets, par le biais du langage Google-Apps-Script.

    Pour plus d'informations, j'utilise PHP 5.6 (testé précédemment avec PHP 8, sans succès).

    Et voici le code :

    var server = "127.0.0.1";
    var port = "3306";
    var dbName = "dbName";
    var username = 'username';
    var password = "password";
    var url = 'jdbc:mysql://'  + server + ":" + port + "/" + dbName ;
    function readData(){
        var connection = Jdbc.getConnection(url, username, password);
        Logger.log(connection);
    
        var statement = connection.createStatement();
        var results = statement.executeQuery("SELECT * FROM dbName");
        var metaData = results.getMetaData();
        var numberCols = metaData.getColumnCount();
        connection.close();
    
    
        var spreadsheet = SpreadsheetApp.getActive();
        var sheet = spreadsheet.getSheetByName("Sheet 1");
        sheet.clearContents();
    
        var newArray = [];
        for (var col = 0 ; col < numberCols ; col++){
          newArray.push(metaData.getColumnName(col+1));
        }
    
        sheet.appendRow(newArray);
        while(results.next()){
          newArray = [];
          for (var col = 0 ; col < numberCols ; col++){
            newArray.push(results.getString(col+1));
          }
          sheet.appendRow(newArray);
        }
        results.close();
        statement.close();
        sheet.autoResizeColumn(1,numberCols+1);
      }
    
    
    
     

    J'ai vu pas mal d'autres exemples avec le même problème de connexion via Google et JDBC ...

    Arriverez-vous à finalement résoudre ce mystère et me permettre de finaliser mon tout premier projet Google Apps Script ?!

    Merci d'avance.

    -
    Edité par (...) 15 septembre 2022 à 19:39:10

    • Partager sur Facebook
    • Partager sur Twitter
      16 septembre 2022 à 12:00:25

      ton serveur MySQL est donc sur ton pc, est-il en service/actif?

      tu dis "depuis quelques jours", est-ce que ça fonctionnait donc avant ?

      Selon moi, le 127.0.0.1 vu par la script, c'est le localhost de google et pas le tien, donc il va falloir mettre ton adresse ip publique à la place, et autoriser un port sur ta box pour que ta base locale soit accessible depuis l'extérieur.

      • Partager sur Facebook
      • Partager sur Twitter
        20 septembre 2022 à 21:13:44

        D'accord. Comment puis-je procéder pour autoriser ceci (temporairement bien sûr) ?
        • Partager sur Facebook
        • Partager sur Twitter
          27 septembre 2022 à 16:56:09

          Avez-vous une solution pour résoudre mon problème de connexion de base de données ?

          umfred a écrit:

          ton serveur MySQL est donc sur ton pc, est-il en service/actif?

          tu dis "depuis quelques jours", est-ce que ça fonctionnait donc avant ?

          Selon moi, le 127.0.0.1 vu par la script, c'est le localhost de google et pas le tien, donc il va falloir mettre ton adresse ip publique à la place, et autoriser un port sur ta box pour que ta base locale soit accessible depuis l'extérieur.



          • Partager sur Facebook
          • Partager sur Twitter
            3 novembre 2022 à 21:45:15

            umfred a écrit:

            https://developers.google.com/apps-script/guides/jdbc#creating_other_database_connections 

            et regarde la doc de ta box internet pour faire du port forwarding


            J'ai à nouveau tenté avec mon ipv4 et fait le bindadress dans le config ini de XAMPP "0.0.0.0"" : toujours sans succès.  Puis-je vous montrer le code et la config ?
            • Partager sur Facebook
            • Partager sur Twitter
              4 novembre 2022 à 11:12:24

              pourquoi 0.0.0.0? quid de la configuration de ta box ? 

              pourquoi nous demander si tu peux nous montrer ton code et ta config? (anonymise les données sensibles comme ton ip externe et tout mot de passe)

              • Partager sur Facebook
              • Partager sur Twitter
                6 novembre 2022 à 20:06:35

                umfred a écrit:

                pourquoi 0.0.0.0? quid de la configuration de ta box ? 

                pourquoi nous demander si tu peux nous montrer ton code et ta config? (anonymise les données sensibles comme ton ip externe et tout mot de passe)


                Merci d'être revenu si vite.

                Alors, j'ai essayé avec ce tutoriel (https://www.actiondesk.io/blog/google-sheets-script-to-automatically-retrieve-sql-data), avec lequel j'ai effectué une "whitelist' des adresses IP dans mon config.ini (Xampp), comme indiqué à l'étape 6 :

                bind-address="127.0.0.1"

                bind-address="0.0.0.0"

                bind-address="64.18.0.0 - 64.18.15.255"

                bind-address="64.233.160.0 - 64.233.191.255"

                bind-address="66.102.0.0 - 66.102.15.255"

                bind-address="66.249.80.0 - 66.249.95.255"

                bind-address="72.14.192.0 - 72.14.255.255"

                bind-address="74.125.0.0 - 74.125.255.255"

                bind-address="173.194.0.0 - 173.194.255.255"

                bind-address="207.126.144.0 - 207.126.159.255"

                bind-address="209.85.128.0 - 209.85.255.255"

                bind-address="216.239.32.0 - 216.239.63.255"

                Toujours sans succès, puisque j'ai toujours ce message d'erreur : 

                Exception: Failed to establish a database connection. Check connection string, username and password.

                Avec ceci et le code Google cité plus haut, comprenez-vous où est mon erreur ?

                Merci d'avance.

                • Partager sur Facebook
                • Partager sur Twitter
                  7 novembre 2022 à 11:05:25

                  probablement dans la configuration de ta box, qui ne redirige pas le port du script vers le port de ta base de données, ou le username/password de connexion à ta base
                  • Partager sur Facebook
                  • Partager sur Twitter
                    7 novembre 2022 à 20:54:03

                    J'ai réessayé en corrigeant le code et en ajoutant un bind_adress = * dans le config.ini. Rien n'y fait. Suis-je réellement obligé d'ouvrir le port de ma box ?? ?
                    • Partager sur Facebook
                    • Partager sur Twitter
                      8 novembre 2022 à 10:51:46

                      bah oui, rediriger le port vers l'adresse ip local de ton pc qui possède le MySQL à atteindre, sinon comment côté google sheets, avec ton adresse ip publique il saura l'adresse de ton pc qui possède la base de données MySQL?
                      • Partager sur Facebook
                      • Partager sur Twitter
                        8 novembre 2022 à 14:28:08


                        On est d'accord que ça craint niveau sécurité ?!

                        Dans ce cas, comment puis-je procéder ?

                        • Partager sur Facebook
                        • Partager sur Twitter
                          8 novembre 2022 à 16:19:12

                          ça craint moyen, tu n'ouvres (redirige) qu'un seul port. 
                          Sinon il faut héberger ta base quelque part sur un serveur internet (comme le font les sites web) et qu'elle soit ainsi accessible de n'importe où.
                          • Partager sur Facebook
                          • Partager sur Twitter
                            8 novembre 2022 à 21:56:44

                            Ok, comment dois-je procéder dans ce cas (pour le premier cas, la redirection vers le port) ?
                            • Partager sur Facebook
                            • Partager sur Twitter
                              9 novembre 2022 à 10:35:21

                              regarde la doc de ta box (redirection de port ou port forwarding)
                              • Partager sur Facebook
                              • Partager sur Twitter
                                14 novembre 2022 à 9:05:10

                                D'accord. Et avec un VPN ?
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  14 novembre 2022 à 14:23:02

                                  ça ne change rien au fait, qu'il faille accéder à la base donc depuis ta box savoir où aller la chercher localement (adresse ip locale + port local).
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    5 décembre 2022 à 16:04:32

                                    Comment faire si la box ne m'appartient pas ? Est-ce possible grâce au protocole SSH ?
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      5 décembre 2022 à 17:05:38

                                      si c'est dans une entreprise, vois avec l'admin système, ou le propriétaire de la box.

                                      Sinon je m'aperçois que je n'avais pas mentionné l'autre possibilité, qui consisterait à faire héberger ta base sur un site en ligne.

                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        5 décembre 2022 à 22:13:02

                                        umfred a écrit:

                                        si c'est dans une entreprise, vois avec l'admin système, ou le propriétaire de la box.

                                        Sinon je m'aperçois que je n'avais pas mentionné l'autre possibilité, qui consisterait à faire héberger ta base sur un site en ligne.


                                        Merci, je vais voir ça.

                                        Pour le site, ça ne sera pas possible vu que le fichier est en local.

                                        Par contre, le protocole SSH n'aurait aucun intérêt dans ce lien local vers Google Sheets ?

                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          6 décembre 2022 à 11:20:40

                                          c'est toujours le même problème, comment indiquer où se trouve la base à google apps/sheets
                                          • Partager sur Facebook
                                          • Partager sur Twitter

                                          [GOOGLE-APPS-SCRIPT] Erreur de connexion BDD

                                          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                          • Editeur
                                          • Markdown