Forum Programmation.php Connexion base mysql

Posté par  .
Étiquettes : aucune
0
18
juil.
2006
La question peut paraître enfantine mais ça ne marche pas ...

J'ai un serveur Linux avec mysql client et php qui doit attaquer une base mysql sur un serveur IIS/PHP/Mysql...

j'y accéde bien en ligne de commande a mon serveur SQL ...

[root@pecom01] mysql -h 141.181.X.X -u root - p util_ecom
Enter password:****
SELECT * FROM users;
[...]

je souhaite y accéder par php sur ce même serveur pour extraire et intégrer des données

[...]
echo "pouet";
$a="12345678";
echo "test".$a."\r\n";

// Paramètres persos
$host = "141.181.X.X"; // voir hébergeur
$user = "root"; // vide ou "root" en local
$pass = "root"; // vide en local
$bdd = "util_ecom"; // nom de la BD
// connexion
@mysql_connect($host,$user,$pass)
or die("Impossible de se connecter AU SERVEUR!!!\r\n");
@mysql_select_db("$bdd")
or die("Impossible de se connecter A LA BDD!!!\r\n");

$query= "SELECT * FROM users ORDER BY NOCLI ";
$result = mysql_query($query);

while($val = mysql_fetch_array($result)){
$i = $i + 1;
[...]


et boom qd je l'execute il me dit :
pouettest12345678
Impossible de se connecter AU SERVEUR!!!

j'ai mis a jour le /etc/php.ini
module mysql...

mysql.default_port =3306
mysql.default_host =141.181.X.X
mysql.default_user =root
mysql.default_password =root


mais toujours que dalle !!!

les droits d'acces au serveur sont bon :

root % ALL PRIVILEGES "Grant"
  • # module php-mysql

    Posté par  . Évalué à 3.

    Bonjour,

    Le module php-mysql est-il bien installé ?
    Car sans celui-ci, php ne peut pas communiquer avec MySQL.

    Le module peut porter un nom différent en fonction de la distribution.
    Pour php4 : php4-mysql, pour php5 : php5-mysql.
    De plus, il existe l'extension php5-mysqli, qui permet d'exploiter plus de fonctionnalités de MySQL (MySQL 4.1 et plus).
    • [^] # Re: module php-mysql

      Posté par  . Évalué à 1.

      Merci pour ta reponce ...

      j'ai fais un extrait de phpinfo()

      mysql

      MySQL Support enabled
      Active Persistent Links 0
      Active Links 0
      Client API version 3.23.58
      MYSQL_MODULE_TYPE external
      MYSQL_SOCKET /var/lib/mysql/mysql.sock
      MYSQL_INCLUDE -I/usr/include/mysql
      MYSQL_LIBS -L/usr/lib/mysql -lmysqlclient



      Directive Local Value Master Value
      mysql.allow_persistent On On
      mysql.connect_timeout -1 -1
      mysql.default_host 141.181.X.X 141.181.X.X
      mysql.default_password root root
      mysql.default_port 3306 3306
      mysql.default_socket no value no value
      mysql.default_user root root
      mysql.max_links Unlimited Unlimited
      mysql.max_persistent Unlimited Unlimited
      mysql.trace_mode Off Off



      La config niveau directive a l'air d'être bonne

      Par contre le fichier /var/lib/mysql/mysql.sock
      n'existe pas ( de plus je ne dais pas a quoi y sert ... )
      • [^] # impression de deja vu

        Posté par  . Évalué à 1.

        voila qui me fait penser au probleme que j'ai eu avec ma dedibox...

        regarde que l'interface reseau localhost soit existante et active (IP 127.0.0.1)

        sur ma dedibox elle etait up mais sans IP, du coup mysql ne demarrait pas => /var/lib/mysql/mysql.sock inexistant
        je devais faire reactiver ma carte localhost et relancer le serveur mysql.

        autre hypothese, tu as deja un service qui tourne sur le meme port que mysql (3306 par defaut), du coup mysql ne peut pas se lancer.
        • [^] # Re: impression de deja vu

          Posté par  . Évalué à 1.

          je veux pas attaquer la BDD sur localhost( en plus y'en as pas ...)
          mais bien sur un serveur distant

          batch PHP / Linux Redhat ES3 => BDD mysql/ W2K/IIS/MYSQL

          le serveur BDD fonctionne bien il y a deja des appli intranet PHP dessus et qui accede bien la BDD en local (phpmyadmin ...)

          il y a rien sur le serveur d'appli qui tourne sur le port 3306 ... (netstat ...)
          • [^] # Re: impression de deja vu

            Posté par  . Évalué à 1.

            je ne parlais pas d'attaquer la base en localhost (sauf dans ma premiere reponse) mais bien de verifier que le localhost etait actif afin que mysql puisse demarrer.

            visiblement ton serveur mysql demarre puisque des applis locales au serveur fonctionne (phpmyadmin), enfin j'espere que tu as essayé de te connecter quand meme. ;-)

            il semblerait donc que ce soit :
            - le serveur de base de donnée n'acceptent pas les acces distants
            ou
            - le serveur distant n'arrivent pas à se connecter sur le serveur de base de donnée... (parefeu ou autre)

            quand tu nous dis que la ligne de commande fonctionne, je suppose que tu l'a faite sur le serveur distant ?

            si oui, alors ce serait un probleme purement PHP, mais là je ne vois pas.
  • # localhost ?

    Posté par  . Évalué à 1.

    tu as essayé en mettant localhost au lieu de l'IP du serveur ?

    car visiblement les serveurs web/php et mysql sont sur la meme machine.

    attention au log/pass qui peuvent etre sensible à la casse
    • [^] # Re: localhost ?

      Posté par  . Évalué à 1.

      En fait la BDD est sur un autre serveur d'appli(IIS/MYSQL)
      le serveur qui contient PHP est un portail WEB...

      Et ne doit en aucun cas contenir des données et ce pour plusieurs raisons :
      1:/ Une notion de securité evidentes
      2:/ En cas de multiplication du portail n'avoir qu'une instence de donnée est moins quiantes a gerer que plusieurs (synchro, maintenance, sauvegarde, etc ...)
  • # mysql_error();

    Posté par  . Évalué à 3.

    $pass = "root"; // vide en local
    "root" != "". Essais de mettre "" à la place de "root" pour le mot de passe.

    Sinon, essais mysql_error() pour avoir des détails sur le problème.
    • [^] # Re: mysql_error();

      Posté par  . Évalué à 1.

      j'ai changé $pwd en mettant "" et il me repond cela ...


      mysql_connect(): Access denied for user 'root'@'10.19.X.X' (using password: NO)


      puis en mettant un pwd bidon ...

      si je met le bon pwd ou un mauvais (diferrant de "" ) il me renvoye ...

      mysql_connect(): Client does not support authentication protocol requested by server; consider upgrading MySQL client in /root/Script/test.php on line 17

      il me met les message depuis que j'ai remplacer @mysql_connec(...);
      par le
      $link = mysql_connect(..);
      pour faire le
      mysql_error($link). "\n";
      qui lui donne comme erreurs
      mysql_error(): supplied argument is not a valid MySQL-Link resource in /root/Script/test.php on line 18


      en gros il me demande un upgrading de mon mysql client...
      • [^] # Re: mysql_error();

        Posté par  . Évalué à 2.

        Les mots de passes des versions recentes (>= 4.1.1) de mysql ne sont plus stockés de la meme facon (hash different) que les precedentes. Pour fixer ca, il y a deux solutions:

        - mettre a jour tes libs mysql du coté client
        - mettre a jour le mot de passe de l'utilisateur du coté serveur (ou recreer un compte) :
        SET PASSWORD FOR 'root'@'10.19.X.X' = OLD_PASSWORD('bleh')

        cf. http://dev.mysql.com/doc/refman/5.0/en/old-client.html


        • [^] # Re: mysql_error();

          Posté par  . Évalué à 1.

          You're the winner !!!!

          merci beaucoup...
          c'est exactement ca

          j'ai fait :


          UPDATE mysql.user SET Password = OLD_PASSWORD('root') WHERE Host = '%' AND User = 'root';
          Query OK, 0 rows affected (0.00 sec)
          Rows matched: 1 Changed: 0 Warnings: 0

          FLUSH PRIVILEGES;
          Query OK, 0 rows affected (0.22 sec)




          je peut lister ma base et tout le tointoin ...

          thanks !!!

          @+ et encore merci...
  • # mysql_error ?

    Posté par  . Évalué à 2.

    Essaye d'avoir plus d'infos avec la fonction mysql_error

    http://php.net/mysql_error

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.