massaiTHEdog

Problème connexion Base de données
« le: 28 August 2012 18:01:45 »
Bonjour, je n'arrive pas à me connecter à ma base de données.
Voici mon code :
mysql_connect("sql.free.fr", "****", "****") or die("Erreur de connexion &agrave la base de donn&eacutees");
Mais si je vais directement sur l'url http://sql.free.fr et que je rentre mon identifiant et mon mot de passe, j'y arrive.

Et sans le "die", l'erreur est la suivante: Warning: mysql_select_db() [function.mysql-select-db]: A link to the server could not be establishedMerci pour votre aide.
« Modifié: 28 August 2012 21:27:18 par massaiTHEdog »

Xazz

Re : Problème connexion Base de données
« Réponse #1 le: 28 August 2012 18:16:18 »
Bonjour,

Le code en question tourne bien sur le compte page perso liée au compte mysql ?

Le premier "****" correspond bien au nom du compte (sans "@free.fr", ".free.fr" ou autre derrière ?)

Le 2ème "****" correspond bien au mot de passe du compte, ou à celui du SQL si tu l'as personnalisé ?

A+

Xavier

bakkata

Re : Problème connexion Base de données
« Réponse #2 le: 28 August 2012 19:54:26 »
Bonjour,

Lis ça ! tu devrais trouver d’où vient ton souci !
Suivant d’où t'initie t'as connexion les problème peuvent être multiple( ouverture de port, translation sur la box, FireWall Windows ou tiers ou FW d'entreprise (checkpoint, ISA, ASA..). etc...
Si tu es en V6 dans l'onglet / réseau local / UPnP IGD : active le paramètre comme indiqué ci-dessous
La box détecte les programmes qui on besoin de se connecter à un port en sortie et créer la redirection
Sinon à toi de le faire a partir de l'onglet redirection de port.
exemple :
IP source     Port WAN    Protocole    IP LAN            Port LAN    Description                                                  Temps restant    
<toutes>            46734             UDP    192.168.1.35    46734    Skype UDP at 192.168.1.35:46734 (2066)    <infini>

J’espère que ces éléments vont t'être utile dans le solutionnement de ton problème,  ;)
Bien cordialement
Bakkata

    Réseau local
Identité |Contrôle parental|Freebox AirMedia|IPv6|Mode Réseau |Redirections de ports|Serveur DHCP|  Switch | UPnP IGD

Paramètres UPnP IGD :   Activer : O------

5.4.1. Guide de sécurité (extrait doc mysql 5.0)

Tous ceux qui utilisent MySQL avec un serveur connecté à Internet doivent lire cette section, pour éviter les erreurs les plus communes.

En parlant de sécurité, nous devons insister sur la nécessiter de protéger tout le serveur, et non pas juste MySQL, contre tous les types d'attaques : surveillance des communications, usurpation, ré-exécution et dénis de service. Nous ne pouvons pas couvrir tous les aspects de tolérance aux fautes et de disponibilité ici.

MySQL dispose d'un système de sécurité basé sur des listes de contrôle d'accès (Access Control Lists, or ACL) pour toutes les connexions, requêtes et opérations que l'utilisateur peut faire. Il y a aussi le support des connexions SSL entre le client et le serveur MySQL. De nombreux concepts présentés ici ne sont pas spécifiques à MySQL : le même concept s'applique à de nombreuses applications.

Lorsque vous utilisez MySQL, suivez ces règles aussi souvent que possible :

    Ne donnez jamais à personne (sauf aux comptes MySQL root) accès à la table user de la base mysql! C'est primordial. Le mot de passe chiffré est le vrai mot de passe de MySQL. Toute personne qui connaît le mot de passe de la table user et qui a accès à l'hôte associé peut facilement se connecter sous le nom de cet utilisateur.

    Apprenez à fond le système de droits MySQL. Les commandes GRANT et REVOKE sont utilisées pour contrôler les accès à MySQL. Ne donnez pas plus de droits que nécessaire. Ne donnez jamais de droits à tous les serveurs hôtes.

    Liste de vérification :

        Essayez la commande en ligne mysql -u root. Si vous pouvez vous connecter, sans donner de mot de passe, vous avez un problème. Toute personne peut se connecter au serveur comme utilisateur root avec le maximum de droits! Passez en revue les instructions d'installation de MySQL, en insistant sur les passages où le mot de passe root est configuré. See Section 2.5.3, « Création des premiers droits MySQL ».

        Utilisez la commande SHOW GRANTS et vérifiez qui a accès à quoi. Puis, utilisez la commande REVOKE pour retirer les droits inutiles.

    Ne stockez jamais de mot de passe en clair dans votre base de données. Si votre serveur est compromis, le pirate aura alors la liste complète des mots de passe, et pourra les utiliser. A la place, utilisez MD5(), SHA1() ou une autre fonction de signature injective.

    Ne choisissez pas vos mots de passe dans un dictionnaire. Il y a des programmes spéciaux pour les rechercher. Même des mots de passe tels que ``xfish98'' est très faible. Par contre, ``duag98'' est bien mieux : il contient aussi le mot ``fish'' mais décalé d'une touche sur un clavier QWERTY. Une autre méthode de génération consiste à prendre la première lettre de chaque mot d'une phrase : ``Maupa'' est issu de ``Marie a un petit agneau.'' C'est facile à retenir, mais difficile à devenir pour un attaquant.

    Investissez dans un coupe-feu. Cela protège de 50% de tous les types d'attaque et vulnérabilité. Placez MySQL derrière le coupe-feu, ou dans une zone démilitarisée (DMZ).

    Liste de vérification :

        Essayez de scanner vos portes depuis l'Internet, avec des outils comme nmap. MySQL utilise le port 3306 par défaut. Ce port ne doit pas être accessible à tous les serveurs. Une autre méthode simple pour vérifier si le port MySQL est ouvert ou non, est d'essayez la commande suivante depuis une machine distante, où server_host est le serveur qui héberge MySQL :

        shell> telnet server_host 3306

        Si vous obtenez une connexion et des caractères binaires, le port est ouvert, et il devrait être fermé par votre routeur ou votre coupe-feu, à moins d'avoir une bonne raison pour le garder ouvert. Si telnet attend, ou que la connexion est refusée, tout va bien : le port est bloqué.

    Ne faîtes confiance à aucune donnée entrée par les utilisateurs de votre application. Ils peuvent déjouer vos filtres en entrant des séquences spéciales via les formulaires Web, les URL ou tout autre point d'entrée de l'application. Assurez vous que votre application reste sûre si un utilisateur entre une chaîne telle que ``; DROP DATABASE mysql;''. C'est un exemple extrêmement simple, mais il dévoilera un trou de sécurité important. Il engendrera aussi des pertes de données si un pirate, utilisant cette technique, vous attaque.

    Une erreur courante est de ne protéger que les chaînes de caractères. N'oubliez pas de protéger aussi les valeurs numériques. Si une application génère une requête telle que SELECT * FROM table WHERE ID=234 où l'utilisateur fournit le 234, alors ce dernier peut proposer la valeur 234 OR 1=1 pour conduire à la requête SELECT * FROM table WHERE ID=234 OR 1=1. Par conséquent, le serveur va lire toutes les lignes de la table. Cela va diffuser toutes les lignes de votre application, et générer un trafic excessif. Pour vous prémunir contre ce type d'attaque, ajoutez toujours des guillemets autour des constantes numériques : SELECT * FROM table WHERE ID='234'. Si un utilisateur entre des informations supplémentaires, elles seront intégrées dans la chaîne. Dans un contexte numérique, MySQL supprimera automatiquement les caractères incompréhensibles.

    Parfois, les gens pensent que si une base de données contient des informations publiques, elle n'a pas besoin d'être défendue. C'est faux. Même si vous pouvez accéder à toutes les lignes de la table, il faut toujours se prémunir contre les dénis de service (par exemple, en utilisant la technique ci-dessus pour générer un trafic excessif). Sinon, votre serveur sera inutilisable.

    Liste de vérification :

        Essayez d'entrer des caractères ‘'’ et ‘"’ dans tous vos formulaires Web. Si vous obtenez une erreur MySQL, étudiez immédiatement le problème.

        Essayez de modifier une URL dynamique en ajoutant les séquences %22 (‘"’), %23 (‘#’) et %27 (‘'’).

        Essayez de modifier les types de données des URL dynamiques de numériques en textuels, avec les caractères cités ci-dessus. Votre application doit être sécurisée contre ce type d'attaque.

        Essayez d'entrer des caractères, des espaces et d'autres symboles spéciaux, autre que des nombres, dans un champ numérique. Votre application devrait supprimer tous ces caractères avant de les passer à MySQL, ou générer une erreur. Passer à MySQL des valeurs non vérifiées est très dangereux.

        Vérifiez la taille des chaînes avant de les passer à MySQL.

        Essayez de faire connecter votre application en utilisant un autre nom que celui qui est utilisé pour les tâches d'administration. Ne donnez pas à votre application des droits dont elle n'a pas besoin.

    De nombreuses interfaces de programmation disposent de moyens pour protéger les valeurs. Correctement utilisés, ils évitent aux utilisateurs de l'application de faire passer des caractères qui auront un effet différent de celui attendu :

        MySQL C API : Utilisez la fonction mysql_real_escape_string().

        MySQL++ : Utilisez les options escape et quote dans le flux de requête.

        PHP : Utilisez la fonction mysql_escape_string(), qui est basée sur la fonction C du même nom. Avant PHP 4.0.3, utilisez addslashes().

        Perl DBI : Utilisez la méthode quote() ou utilisez les variables de requête.

        Java JDBC : Utilisez un objet PreparedStatement ou utilisez les variables de requête.

    Les autres interfaces ont des fonctionnalités similaires.

    Ne transmettez pas de données déchiffrées sur Internet. Cette information est accessible à tout ceux qui ont le temps et la capacité d'intercepter et d'utiliser ces mots de passe. Utilisez plutôt un protocole sécurisé comme SSL ou SSH. MySQL supporte les connexions SSL depuis la version 4.0.0. SSH peut être utilisé pour créer un tunnel chiffré et compressé de communication.

    Apprenez à utiliser les programmes tcpdump et strings. Dans la plupart des cas, vous pouvez vérifier si un flux MySQL est chiffré avec la commande suivante :

    shell> tcpdump -l -i eth0 -w - src or dst port 3306 | strings

    (Cette commande fonctionne sous Linux, et devrait être adaptée facilement dans les autres systèmes.) Attention : si vous ne voyez pas de données en clair, cela ne signifie pas toujours que les informations sont chiffrées. Si vous avez besoin de haute sécurité, consultez un expert.
« Modifié: 28 August 2012 19:58:04 par bakkata »

massaiTHEdog

Re : Problème connexion Base de données
« Réponse #3 le: 28 August 2012 21:00:14 »
@Xavier

Je me sers de mon identifiant sans @free.fr et mon mot de passe n'est pas personnalisé.
Le problème vient peut-être du fait que je possède 2 comptes mails pour les pages persos.
Donc j'ai 2 sites. Or quand j'avais qu'un seul site, j'utilisais ma base de données et je n'avais pas de problème.


Xazz

Re : Re : Problème connexion Base de données
« Réponse #4 le: 28 August 2012 22:44:44 »
Bonsoir,

Donc j'ai 2 sites. Or quand j'avais qu'un seul site, j'utilisais ma base de données et je n'avais pas de problème.

Chaque base de donnée n'est accessible que depuis le compte PHP lié. Si tu essaies d'accéder à une base de donnée MySQL chez Free depuis autre chose (PC perso, autre serveur, autre compte Pages perso), tu obtiendras ce type d'erreur.

Tu dis avoir créé un deuxième compte. La base MySQL est-elle bien activée sur ce nouveau compte, si c'est celui sur lequel tourne ton code PHP ?

A+

Xavier

massaiTHEdog

Re : Problème connexion Base de données
« Réponse #5 le: 28 August 2012 22:59:43 »
La base de données que j'utilise pour mon 2ème site est celle qui associé à ma deuxième adresse mail free (en gros aucune erreur), et elle est activée puisque j'y ai déjà rentré des informations dedans.

Xazz

Re : Re : Problème connexion Base de données
« Réponse #6 le: 29 August 2012 11:20:31 »
Bonjour,

La base de données que j'utilise pour mon 2ème site est celle qui associé à ma deuxième adresse mail free (en gros aucune erreur), et elle est activée puisque j'y ai déjà rentré des informations dedans.

Si tout est réellement OK de ton côté, la seule piste restante est un problème chez Free (problème sur le serveur MySQL, mauvaise configuration de la BdD, etc)...

Tu peux contacter l'administrateur du service sur le newsgroup proxad.free.services.pagesperso. Il est indispensable de préciser le nom du compte Pages perso concerné dans ton message.

A+

Xavier