WampServer

Apache, PHP, MySQL on Windows 

 
  • Accueil forum
  • Retour à WampServer
  • presentation
  • Download
  • Addons
  • Formations
  • Alter Way

 
Voir le sujet: Précédent•Suivant
Aller à : Liste des Forums•Liste des messages•Nouvelle discussion•Recherche•Connexion•Imprimer la vue
Changer le mot de passe utilisé par php
Envoyé par: Jonahboss (---.37.6.67.static.user.ono.com)
Date: 13 January 2009 à 17:41

Bonjour,

Après lecture de différents Posts et une analyse minutieuse à l'aide de mon Super-Cerveau digne d'un Bulôt cuit, je reste incapable de faire la manip suivante...

Je souhaite modifier l'utilisateur par défaut utilisé par PHP pour accéder à la base MySQL de mon site.

Je l'ai modifier et, dès que je tente de m'authentifier sur les pages admin de mon site, j'obtient ça :

Warning: mysql_connect() [function.mysql-connect]: Client does not support authentication protocol requested by server; consider upgrading MySQL client in C:\wamp\www\...\functions.php on line 11

Je souhaite garder l'utilisateur root@localhost.
Ce que je veux c'est que mon site PHP puisse se connecter à la base MySQL le concernant en tant qu'utilisateur toto que j'ai déjà créé :

host : localhost
BDD : les_blagues_a_toto
user : toto
password : pipicaca

Qui n'aura qu'un accès limité sur MySQL : SELECT UPDATE DELETE INSERT

Comment puis je procéder ?
Quels fichiers ini dois je changer et quel paramètre?
Et PhpMyAdmin pourra t'il continuer à utiliser l'utilisateur root@localhost, ou sera t'il lui aussi affecté ?

Merci d'avance pour vos réponses.

Options: Répondre•Citer ce Message
Re: Changer le mot de passe utilisé par php
Envoyé par: Otomatic (---.fbx.proxad.net)
Date: 13 January 2009 à 17:57

Bonjour,

Déjà, avant de vous répondre plus avant, j'ai besoin de savoir plusieurs choses :

> Je souhaite modifier l'utilisateur par défaut utilisé par PHP pour accéder à la base MySQL de mon site.
Ne serait-ce pas, plutôt, que vous voulez changer le nom utilisateur et le mot de passe utilisés par un fichier de configuration d'une application PHP qui se connecte à une base de données en utilisant MySQL ?

> Ce que je veux c'est que mon site PHP puisse se connecter à la base MySQL le concernant en tant qu'utilisateur toto que j'ai déjà créé.

Cet utilisateur toto, vous l'avez créé où et comment ?

> Et PhpMyAdmin pourra t'il continuer à utiliser l'utilisateur root@localhost, ou sera t'il lui aussi affecté ?
Tant que vous ne supprimerez pas l'utilisateur root@localhost de la table user de la base mysql, vous pourrez continuer à l'utiliser pour vous connectez à PhpMyAdmin.

Options: Répondre•Citer ce Message
Re: Changer le mot de passe utilisé par php
Envoyé par: Jonahboss (---.37.11.50.dyn.user.ono.com)
Date: 14 January 2009 à 10:51

Bonjour

Et merci pour la rapidité. Alors reprenons...

>>> Je souhaite modifier l'utilisateur par défaut utilisé par PHP pour accéder à la base MySQL de mon site.

>Ne serait-ce pas, plutôt, que vous voulez changer le nom utilisateur et le mot de passe utilisés par un >fichier de configuration d'une application PHP qui se connecte à une base de données en utilisant MySQL ?

Euh... En fait J'ai un site dans le répertoire www de Wamp, il utilise un fichier de config avec les infos suivantes concernant la connexion a MySQL :

function connexion_DB() {
// Déclaration des paramètres de connexion
$host = "localhost";
$user = "root";
$bdd = "Les_blagues_a_toto";
$passwd = "";
}

Aucun problème de connexion en utilisant root l'authentification sur le site se fait sans problème.
Le problème c'est que mon site se connecte à MySQL avec des privilèges dignes de Dieu le père, donc en cas de failles de sécurité dans mon code les gentils forbans vont s'en donner à cœur joie en massacrant mes pauvres petites bases, pilonant les tables au canon et violant les mots de passe.

Ce que je veux c'est qu'il puisse accéder à MySQL en utilisant le nom d'utilisateur que je lui ai créé (voir question 2):

function connexion_DB() {
// Déclaration des paramètres de connexion
$host = "localhost";
$user = "toto";
$bdd = "Les_blagues_a_toto";
$passwd = "pipicaca";
}
Mais avec cette configuration le site plante... Pourtant l'utilisateur toto me semble valide, j'ai du oublier un truc quelque part.

>>> Ce que je veux c'est que mon site PHP puisse se connecter à la base MySQL le concernant en tant qu'utilisateur toto que j'ai déjà créé.

>Cet utilisateur toto, vous l'avez créé où et comment ?

Je l'ai créé par PhpMyAdmin, il a des privilèges SELECT INSERT UPDATE DELETE uniquement sur la base "Blagues_a_toto" il ne peut ni accéder et encore moins modifier les autres bases.
Procédure :
PhpMyAdmin > Localhost >Privilèges > Ajouter un utilisateur
Privilèges globaux : tout décocher
Privilèges spécifique à "Les_Blagues_a_toto" : SELECT INSERT UPDATE DELETE
Informations de connexion : celles de la config ci-dessus

Merci pour la réponse concernant PhpMyAdmin.

Si vous pouvez m'aider merci car là je patauge...

Options: Répondre•Citer ce Message
Re: Changer le mot de passe utilisé par php
Envoyé par: Otomatic (---.fbx.proxad.net)
Date: 14 January 2009 à 12:12

Bonjour,

Le message d'erreur ne serait-il pas :

Access denied for user 'toto'@'localhost' (using password : YES)

Si oui, c'est qu'il doit exister d'autres utilisateurs que toto et root sur localhost, par exemple un utilisateur anonyme ''@localhost sans mot de passe.

Via PhpMyAdmin, Privilèges, supprimer tous les utilisateurs sauf root@localhost et toto@localhost.

Options: Répondre•Citer ce Message
Re: Changer le mot de passe utilisé par php
Envoyé par: Jonahboss (---.37.11.50.dyn.user.ono.com)
Date: 14 January 2009 à 12:29

Le message d'erreur est le suivant :

Warning: mysql_connect() [function.mysql-connect]: Client does not support authentication protocol requested by server; consider upgrading MySQL client in C:\wamp\www\...\...\...\functions.php on line 11

Les \...\ sont des noms de dossier que j'ai masqués, tout comme toto qui n'est pas le vrai nom...

le fichier fonctions.php :

1: <?php
2: // Se connecte à la DB
3: // Paramètres : nom de la base -> $name_DB
4: function connexion_DB() {
5: // Déclaration des paramètres de connexion
6: $host = "localhost";
7: $user = "toto";
8: $bdd = "Les_blagues_a_toto";
9: $passwd = "pipicaca";
10: // Connexion au serveur
11: mysql_connect($host, $user,$passwd) or die("erreur de connexion au serveur"winking smiley;
...
?>

Pas d'autres uitilisateurs que toto et root

Options: Répondre•Citer ce Message
Re: Changer le mot de passe utilisé par php
Envoyé par: Otomatic (---.fbx.proxad.net)
Date: 14 January 2009 à 13:12

Bonjour,

Quitter Wampserver.

Modifier le fichier C:\wamp\apps\phpmyadmin3.1.1\config.inc.php comme suit :

$cfg['Servers'][$i]['auth_type'] = 'http';
$cfg['Servers'][$i]['user'] = '';
$cfg['Servers'][$i]['password'] = '';

Sauver le fichier modifié.
Lancer Wampserver
Lancer PhpMyAdmin et mettre User = root et le mot de passe (si défini) pour vérifier connexion avec root@localhost
Quitter PhpMyAdmin et Wampserver et fermer le navigateur (Pour détruire la session)
Relancer Wampserver
Lancer PhpMyadmin et mettre User = toto et le mot de passe pipicaca pour vérifier connexion avec toto@localhost

Options: Répondre•Citer ce Message
Re: Changer le mot de passe utilisé par php
Envoyé par: Jonahboss (---.37.11.50.dyn.user.ono.com)
Date: 14 January 2009 à 13:32

Avec root No problem.

Avec toto :

#1251 - Client does not support authentication protocol requested by server; consider upgrading MySQL client

Options: Répondre•Citer ce Message
Re: Changer le mot de passe utilisé par php
Envoyé par: cafelaitt (---.adslplus.ch)
Date: 14 January 2009 à 13:47

Bonjour, c'est pas pour gêner mais , moi quand je lance PHPmyAdmin , il me demande le user : je met root , et le mot de passe je met monmotdepasse ( oui c'est celui la ^^ ) et là il remet la page à zàro et je dois remettre le user et mot de passe , que dois-je faire ( aussi quand j'ai fais la commande pour changer le mot de passe cela ne change rien )

Options: Répondre•Citer ce Message
Re: Changer le mot de passe utilisé par php
Envoyé par: Otomatic (---.fbx.proxad.net)
Date: 14 January 2009 à 14:20

Jonahboss a écrit:
-------------------------------------------------------
> Avec root No problem.
>
> Avec toto :
>
> #1251 - Client does not support authentication protocol requested by server; consider upgrading MySQL client

Quelles sont vos versions Apache, PHP, MySql et PhpMyAdmin ?

Options: Répondre•Citer ce Message
Re: Changer le mot de passe utilisé par php
Envoyé par: Jonahboss (---.37.11.50.dyn.user.ono.com)
Date: 14 January 2009 à 15:59

Apache : 2.0.63
PHP : 4.4.7
MySQL : 4.1.22
PhpMyAdmin : 2.11.9.4

Ces versions correspondent au serveur en ligne que je vais utiliser.

Avant même qu'on me le dise, JE SAIS MON HÉBERGEUR EST UNE DAUBE !!! Mais j'ai pas le choix...

Options: Répondre•Citer ce Message
Re: Changer le mot de passe utilisé par php
Envoyé par: Otomatic (---.fbx.proxad.net)
Date: 14 January 2009 à 18:43

Bonsoir,

Je crains fort, vu les versions utilisées, de ne pouvoir vous venir plus en aide.

En vous connectant sur PhpMyAdmin en tant que root@localhost, supprimez l'utilisateur toto@localhost puis quittez PhpMyAdmin, le navigateur et Wampserver.

Relancer Wampserver puis PhpMyAdmin, bien sûr en tant que root@localhost et ajoutez l'utilisateur toto@localhost, dans un premier temps sans mot de passe et avec tous les privilèges.
Quittez PhpMyAdmin, le navigateur et Wampserver.

Relancer Wampserver puis PhpMyAdmin en tant que toto@localhost pour vérifier la connexion.

Recommencer, pas à pas, les manipulations, en tant que root@localhost pour d'abord mettre un mot de passe à toto@localhost, puis, si ça fonctionne, limiter les privilèges de toto.

Options: Répondre•Citer ce Message
Re: Changer le mot de passe utilisé par php
Envoyé par: Jonahboss (---.37.11.50.dyn.user.ono.com)
Date: 15 January 2009 à 12:40

Solution trouvée !!!!!!!!!!!!!!

Le problème vient du fait qu'à partir de MySQL 4.1 la fonction password de Mysql qui hash les mots de passe est passée d'un hash de 16 caractère à 41 caractères...

Donc à problème de Barbare solution de Barbare !

1) Dans PhpMyAdmin connection sous root sans mot de passe.
2) Ouverture de la base nommée mysql.
3) dans la table user on modifie le champ password de 41 on passe la longueur du champ à 16 caractères.

Le champ étant limité à 16 caractère le serveur MySQL n'a pas le choix il hash le password sur 16 au lieu de 41.

On doit donc recréer l'utilisateur toto avec les privilèges voulus et, AU MIRACLE ! Tout fonctionne sans problème.

Inconvénient : un hash de 16 caractère est plus facile à cracker qu'un hash de 41 caractères.

Merci Otomatic pour son aide (même si sur ce coup il est resté en manuel ;-) ) j'ai un peu mieux compris comment marchait MySQL ça devrait m'aider dans le futur.

[EDIT]
A Otomatic :
La dernière solution vous proposez n'a malheureusement pas marcher.
Quand ça veut pas, ça veut pas !
Merci quand même



Modifie 1 fois. Derniere modification le 15/01/2009 à 12:43 par Jonahboss.

Options: Répondre•Citer ce Message
Re: Changer le mot de passe utilisé par php
Envoyé par: Otomatic (---.fbx.proxad.net)
Date: 15 January 2009 à 15:24

Bonjour,

il y avait, peut-être, une autre solution justement à cause du changement de procédure de « hash » des mots de passe.

Mettre dans wamp\bin\mysql\mysql5.1.30\my.ini :

old_password=1

et, si ça ne suffit pas, se connecter à MySQL en ligne de commande par la console et taper :

update user set Password=OLD_PASSWORD('ancien_mot_de_passe') where User='toto';

Options: Répondre•Citer ce Message
Re: Changer le mot de passe utilisé par php
Envoyé par: Jonahboss (---.37.11.50.dyn.user.ono.com)
Date: 15 January 2009 à 18:55

Exact, j'avais vu ça chez MySQL, mais j'ai préféré faire mon feignant, c'était beaucoup trop simple pour ne pas être tenté. :-)

Options: Répondre•Citer ce Message


Aller à : Liste des Forums•Liste des messages•Recherche•Connexion
Désolé, seuls les utilisateurs connectés peuvent envoyer des messages dans ce forum.
Cliquer ici pour se connecter

design by jidePowered by Alter Way get firefoxget PHP