Problème de paramètres utilisateur / privilèges ?

Fermé
lilsource Messages postés 34 Date d'inscription vendredi 8 novembre 2013 Statut Membre Dernière intervention 17 mars 2023 - Modifié par lilsource le 8/11/2013 à 09:43
lilsource Messages postés 34 Date d'inscription vendredi 8 novembre 2013 Statut Membre Dernière intervention 17 mars 2023 - 16 nov. 2013 à 20:10
Bonjour à tous, je suis nouvelle ici.

J'essaye de créer une interface pour répertorier des livres via myadmin en passant par Wamp mais je suis heurtée à un problème que je n'arrive pas à résoudre sur un autre forum. Je sais qu'ici ça bouge pas mal alors j'espère que quelqu'un pourra me sortir de l'impasse. Voilà comment j'appelle ma base de données :

$link = mysql_connect ( "localhost","root","" );

Mais ça semble être une erreur alors hier dans myadmin, j'ai créé un nouvel utilisateur que j'ai nommé media (même nom que ma base de données). Ses privilèges? J'ai tout coché (je ne sais pas à quoi correspondent toutes les abréviations) et j'ai généré un mot de passe. Donc dans mon fichier config.inc à la ligne qui merdoit, j'ai remanié :

$link = mysql_connect ( "127.0.0.1","media","mon_nouveau_mo_de_passe" );

Mais vu que ça change rien, et que c'est toujours impossible de se connecter à la base (selon le message d'erreur que j'ai paramétré dans mon code) peut être faut-il faire de même dans le fichier config.inc.php du logiciel de bdd (wamp, en l'occurence).

Mais dites moi si je me trompe. en utilisant mysql_connect et non mysqli, est-ce que tous mes problèmes de connection à la BDD peuvent provenir de là? Je sais que c'est mieux d'être en php5 mais j'ai déjà essayé et j'avais des erreurs de code....
C'est un métier, je sais et je suis partie dans un truc qui me dépasse mais je crois que je suis près du but (avec un petit coup de pouce parce que moi pas bien parler langage informatique mais j'y travaille chaque jour).

Merci pour votre aide précieuse.

28 réponses

Utilisateur anonyme
10 nov. 2013 à 00:24
Quand tu travailles en ligne, tu ne travailles pas avec la même base qu'en local ! Pas le même hôte, pas le même mot de passe, pas le même nom de base.

Si ton site est m2cdiffusion.free.fr (sans point entre m2c et diffusion je suppose, car si j'en mets un, j'obtiens une page inconnue), ton script pour te connecter devrait être :

<?php

$db = "m2cdiffusion";
$link = mysql_connect ( "sql.free.fr","m2cdiffusion,","tonmotdepasse" );
if( ! $link )
die ( "Impossible de se connecter à MySQL" );
mysql_select_db( $db, $link )
or die ( "Impossible d'ouvrir $db: ".mysql_error() );
?>
Le mot de passe à utiliser est celui que t'a donné free lors de ton inscription. Si tu ne l'as pas changé, c'est le même que pour accéder à ta boîte mail et à ton ftp.
1
Utilisateur anonyme
8 nov. 2013 à 11:49
Bonjour

Ça devrait marcher avec mysql aussi, bien que mysqli ou PDO soient préférables.
Pour ta connexion, arrives-tu à te connecter avec phpMyAdmin ? Que donnes-tu comme nom d'utilisateur et mot de passe ? Si c'est bien root et "", ta première ligne devrait marcher.
Essaye
$link = mysql_connect ( "localhost","root","" ) or die(mysql_error());
; pour avoir un diagnostic plus précis.
0
lilsource Messages postés 34 Date d'inscription vendredi 8 novembre 2013 Statut Membre Dernière intervention 17 mars 2023
Modifié par lilsource le 8/11/2013 à 14:18
Merci pour ta réponse,

Oui, j'arrive à me connecter à phpMyAdmin avec root et rien comme mot de passe. Et malgré tout cette ligne pose problème

$link = mysql_connect ( "localhost","root","" ).

C'est peut etre localhost en fait qui va pas. J'ai essayé 127.0.0.1 mais pareil, rien qui change.
Et comme y a toujours ce message en rouge sur phpMyAdmin :
Votre fichier de configuration fait référence à l'utilisateur «root » sans mot de passe, ce qui correspond à la valeur par défaut de MySQL. Votre serveur MySQL est donc ouvert aux intrusions, et vous devriez corriger ce problème de sécurité.

C'est pourquoi j'ai carrément créé un nouvel utilisateur et généré un mot de passe (car ça semblait être ça le problème pour phpMyAdmin, un problème de sécurité pour le serveur), donc voilà maintenant
root
, c'est
media
et le mot de passe, c'est le hachage qu'il m'a généré avec le mot de passe que je lui ai fourni.
Je dois mettre le mot de passe que j'ai choisi ou le mot de passe de je ne sais combien de caractère que ça a généré ?

Donc bon toujours est-il que ça aurait dû marcher déjà au départ sans créer de nouvel utilisateur?
0
Utilisateur anonyme
8 nov. 2013 à 14:33
Faut pas tout mélanger...
D'abord, as-tu essayé la ligne que je t'ai proposée avec le or die (mysql_error()) ?

Ensuite, phpMyAdmin te signale que c'est dangereux de ne pas avoir de mot de passe, mais ça n'empêche pas de marcher. Et ce problème de sécurité n'en est pas un tant que tu travailles en local.

Pour le mot de passe que tu as généré, je ne sais pas exactement ce que tu as fait, je ne peux pas deviner si le nouveau mot de passe est celui que tu as tapé ou le résultat du hachage.

Si tu arrives encore à te connecter à phpmyAdmin avec root et sans mot de passe, tu devrais pouvoir le faire aussi avec ton script.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lilsource Messages postés 34 Date d'inscription vendredi 8 novembre 2013 Statut Membre Dernière intervention 17 mars 2023
Modifié par lilsource le 8/11/2013 à 15:51
Oui oui, ça marche super hors ligne.... ça c'est bon.
Mon problème c'est en ligne...

Alors, je vais te transmettre mon code entier, la ligne que j'avais copié/collé était juste la ligne où il semble qu'il y ait une erreur. Donc voilà :
<?php
$db = "media";
$link = mysql_connect ( "localhost","root","" ); /*TjrKhWX7NhtJtvKB*/
if( ! $link )
die ( "Impossible de se connecter à MySQL" );
mysql_select_db( $db, $link )
or die ( "Impossible d'ouvrir $db: ".mysql_error() );
?>

Comme tu vois, il y a la commande or die. Est-ce que en le voyant complet, il te semble juste?

Sinon tu dis : Et ce problème de sécurité n'en est pas un tant que tu travailles en local. . Bien entendu mais ma médiathèque est destinée à être une interface en ligne, donc réel problème.

Sinon voilà, j'en suis exactement là, ce que tu disais "je ne peux pas deviner si le nouveau mot de passe est celui que tu as tapé ou le résultat du hachage". Et bien c'est la question ultime que je pose ici...
Quelqu'un le sait-il ?
0
Utilisateur anonyme
8 nov. 2013 à 16:13
Je vois que tu as décidé de ne pas essayer la ligne que je t'ai donnée. Te rends-tu compte que tu nous prives de l'information que te donnerait le message de mysql_error() ?

Qu'entends-tu exactement par "en ligne" et "hors ligne" ? Comment fais-tu pour te connecter dans chacun des cas ? Si ta machine "en ligne" est chez un hébergeur, il va de soi(?) qu'il faut te connecter avec les identifiants fournis par cet hébergeur.

Quant à utiliser ton mot de passe ou son hachage, on ne peut pas le deviner avec ton code : ce qui compte, c'est la façon dont tu as créé le nouvel utilisateur.
0
lilsource Messages postés 34 Date d'inscription vendredi 8 novembre 2013 Statut Membre Dernière intervention 17 mars 2023
9 nov. 2013 à 19:04
D'accord j'ai mis la ligne que tu m'as donnée... donc rien ne s'affiche, ni page, ni message d'erreur en passant par l'url de mon site (ce que j'appelle en ligne, pour les internautes quoi). tu peux le voir toi même en cliquant sur m2c.diffusion.free.fr mais peut être qu'entre temps j'aurais remis mon code qui lui affiche un message d'erreur (dont je parlais plus haut). T'inquiète, c'est pas l'histoire de la connexion, le problème c'est bien l'utilisateur.

Voilà c'est ça que je voulais dire par hors ligne et hors ligne je voulais dire en local.

tu dis : "Quant à utiliser ton mot de passe ou son hachage, on ne peut pas le deviner avec ton code : ce qui compte, c'est la façon dont tu as créé le nouvel utilisateur." Non peut être pas avec mon code mais avec ce qu'on doit paramétrer dans les privilèges de mon nouvel utilisateur dans phpMyAdmin.

Sinon avec tout ça, quelqu'un a une idée ?
0
lilsource Messages postés 34 Date d'inscription vendredi 8 novembre 2013 Statut Membre Dernière intervention 17 mars 2023
10 nov. 2013 à 15:58
Merci Le Père
Oui pardon, sans point m2cdiffusion.free.fr (bien vu)
Génial, tu me donnes du nouveau. Je teste ta suggestion.

enfin vu que : $db = "media";
j'ai parametré :
$link = mysql_connect ( "sql.free.fr","media","mon_mot_de_passe_chez_free" );

J'étais super enthousiaste car je n'avais jamais essayé comme ça.

Malheureusement ma page affiche :
Warning: mysql_connect() [function.mysql-connect]: Unknown MySQL server host 'm2cdiffusion.sql.free.fr' (1) in /mnt/113/sda/3/8/m2cdiffusion/config.inc on line 3
Impossible de se connecter à MySQL

Toujours cette maudite ligne 3.

Par contre quand j'ouvre PhpMyAdmin, on me demande utilisateur et mot de passe. ça s'ouvre parfaitement avec root et rien comme mot de passe. Est-ce normal vu que j'ai paramétré un nouvel utilisateur media et généré un mot de passe.

Grrr... je crois qu'on commence à tenir le bon bout, ne me lâche pas.
Que se passe-t -il???
0
Utilisateur anonyme
10 nov. 2013 à 22:29
Attention, je crois que tu es encore en train de confondre ton phpmyadmin local et celui de chez free.
Chez free, tu ne te connectes certainement pas avec root et sans mot de passe. Chez free, tu n'as pas non plus le choix du nom de la base, c'est forcément ton identifiant - ici m2cdiffusion et certainement pas media.
As-tu activé ta base de données chez Free ? Elle ne l'est pas automatiquement quand tu crées ton compte, il faut aller dans ta console de gestion et activer mysql.
0
lilsource Messages postés 34 Date d'inscription vendredi 8 novembre 2013 Statut Membre Dernière intervention 17 mars 2023
11 nov. 2013 à 15:31
Je ne sais pas ce que je mélange, bien entendu que chez free, je me connecte avec mes identifiants free: m2cdiffusion et certainement pas media comme tu dis.
Ma base de données chez free?
Ma console de gestion et activer mysql...
Comment? Je ne savais pas non.
Je vais regarder.
Au fait, pourquoi as-tu retiré ta réponse précédente?
0
Utilisateur anonyme
11 nov. 2013 à 16:12
Je n'ai pas retiré ma réponse précédente, quelqu'un a mis +1 et ça la fait remonter au début de la page. Clique sur Trier par Date pour tout remettre dans l'ordre.
Quand tu dis que tu te connectes chez free avec m2cdiffusion, de quoi parles-tu :
- de ta connexion à ta console de gestion
- de ta connexion à ta boête mail
- de ta connexion ftp
- de ta connexion phpmyadmin ?

D'autre part, j'insiste sur le fait que ta base de données chez free s'appelle m2cdiffusion et ne peut donc PAS s'appeler media.
Donc mysql_select_db( $db, $link ) ne peut marcher QUE si $db="m2cdiffusion "
0
lilsource Messages postés 34 Date d'inscription vendredi 8 novembre 2013 Statut Membre Dernière intervention 17 mars 2023
12 nov. 2013 à 22:39
Merci j'ai trouvé le tri par date (sous le 1er message).

Donc quand je dis que je me connecte chez free avec m2cdiffusion, je parle de ma connexion ftp. C'est le nom d'utilisateur chez free (ftp) ainsi que l'url : m2cdiffusion.free.fr. C'est ma BDD via phpMyAdmin qui se nommait media mais tu dis :
mysql_select_db( $db, $link ) ne peut marcher QUE si $db="m2cdiffusion"

Ma base de donnée chez free n'a pas de nom car je ne savais pas qu'il fallait activer la bbd d'abord chez free.
C'est fait, elle devrait être active d'ici 24 à 48h. Donc d'accord j'ai renommé $db="m2cdiffusion". Mais je pensais que je pouvais choisir n'importe quel nom de bdd via phpMyAdmin. Ce qui voudrait dire que je n'ai pas le droit à 2 BDD pour le même site.

Je crois que c'est bizarre.
0
Utilisateur anonyme
13 nov. 2013 à 08:14
mysql_select_db( $db, $link ) ne peut marcher QUE si $db="m2cdiffusion"
Ceci est vrai pour Free. Chez toi, tu peux créer les bases de données que tu veux, avec les noms que tu veux, mais chez Free tu as une seule base de données dont le nom est ton identifiant. Je pratique Free depuis plus de 10 ans.
Avoir une seule base de données sur un compte ne m'a jamais bloqué ni même gêné : d'une part il est facile de créer d'autres comptes, et d'autre part, si tu prends l'habitude de mettre un préfixe à tes noms de tables, tu ne les mélanges pas. Si tu utilises des scripts tout faits, ils te proposent souvent (mais pas toujours, c'est vrai) de choisir ce préfixe.
0
lilsource Messages postés 34 Date d'inscription vendredi 8 novembre 2013 Statut Membre Dernière intervention 17 mars 2023
13 nov. 2013 à 16:11
D'accord d'accord mais euhh, ceci ne résous pas mon problème. Je n'arrive toujours pas à avoir des pages actives avec ma base.

Aujourd'hui j'ai ce code dans config.inc
<?php

function connect($sql) {
$link=mysql_connect('localhost','root','');
mysql_select_db('m2cdiffusion',$link);
echo mysql_error($link);
$req=mysql_query($sql) or die ('erreur requette!<br/>'.$sql.'<br>'.mysql_error());
return $req;
mysql_close();
}
?>

Regarde ce lien directement en ligne m2cdiffusion.free.fr et dis moi avec les 2 messages d'erreur :

Warning: mysql_select_db() [function.mysql-select-db]: A link to the server could not be established in /mnt/113/sda/3/8/m2cdiffusion/acc1-livr.inc on line 3

Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in /mnt/113/sda/3/8/m2cdiffusion/acc1-livr.inc on line 6

Qu'est ce que cela signifie. On dirait que c'est juste que ma base de données n'existe pas. Et pourtant...

Donc, en cliquant sur mon onglet 'liste des ouvrages' au lieu de voir ça, je dois me rediriger vers une page qui s'appelle 'acc1-livr.php' et qui est reliée à acc1-livr.inc où j'ai posé mon php :

<?php

$query1 = "SELECT * FROM 'revues'";
$result1 = mysql_query($query1) or die(mysql_error());
while($row = mysql_fetch_object($result1))
{
print "<tr>\n";
print "<td width='300' align='center'>$row->titrev</td>\n";
print "<td width='200' align='center'>$row->numero</td>\n";
print "<td width='100' align='center'>$row->date</td>\n";
print "</tr>\n";
}
?>

Donc c'est de la ligne 3
$result1 = mysql_query($query1) or die(mysql_error());
et la ligne 6
print "<tr>\n";
Dont il s'agit d'erreur.

Je n'y comprends rien... et toi?
0
Utilisateur anonyme
13 nov. 2013 à 17:42
Il y a beaucoup de choses que je ne comprends pas

Si j'ai bien retenu, ça marche très bien en local mais pas chez Free. Sommes-nous d'accord ?
Ensuite, tu essayes de te connecter avec
$link=mysql_connect('localhost','root','');
As-tu bien cette ligne chez Free, alors que ton nom d'utilisateur N'EST PAS 'root' et que ton mot de passe N'EST PAS vide chez Free ?

Tu présentes une fonction connect , qui, très bizarrement, fait non seulement une connexion, mais aussi une requête. Où est appelée cette fonction ? Et à quoi sert un mysql_close derrière un return, puisqu'il ne sera jamais exécuté ?
0
Utilisateur anonyme
13 nov. 2013 à 17:48
Questions supplémentaires :
Ta base de données est-elle active chez Free ?
Arrives-tu à t'y connecter avec le phpmyAdmin de chez Free (Je ne parle pas de celui que tu as localement)
0
lilsource Messages postés 34 Date d'inscription vendredi 8 novembre 2013 Statut Membre Dernière intervention 17 mars 2023
13 nov. 2013 à 20:48
Alors non maintenant ça marche ni en local, ni par l'url du site où je suis hébergée chez free. Soit ni en faisant http://localhost/m2cdiffusion/ ni en faisant http://m2cdiffusion.free.fr/ sur mon navigateur.

Voici ce que me dit free quand je vais a nouveau sur activer ma base de données :
Votre base de données a déja été activée,
elle sera créée durant la nuit.

Wouaaaahhhhh.... quelle joie. Je crois que ma nuit va être longue.

Pour le reste, c'est chaud, je suis novice et tu me parles comme une experte, on y arrivera pas.

Tu ne peux pas me dire directement les choses. Les devinettes, j'y arrive pas.
Bon, j'ai mis mysql_close avant le return. C'était déjà ça ? mais pour "la fonction connect , qui, très bizarrement, fait non seulement une connexion, mais aussi une requête" là j'avoue, si tu pouvais me dire quoi mettre au juste, ça aiderait non?

Si j'arrive à me connecter sur phpMyAdmin via free? Non pas por l'instant. Surement quand la base sera active.
0
Utilisateur anonyme
13 nov. 2013 à 21:28
Vu le truc dans lequel tu te lances, et vu que tu avais écrit plus haut que ça marchait super hors ligne, je ne pensais pas que tu étais si novice que ça.
Je ne joue pas aux devinettes, j'essaye de te montrer ce qui ne va pas. Mais en supposant que tu en sais un minimum, quand même. Par exemple, que l'instruction "return" (tu ne l'as pas mise par hasard, quand même) fait sortir d'une fonction. Donc mettre autre chose après return ne sert à rien, ça ne sera pas exécuté.

Je trouve également étonnant, même si le langage l'autorise, de faire une fonction que tu appelles "connect" et qui fait autre chose qu'une connexion : pire, elle se termine par une déconnexion ! Ce n'est pas une question de connaissances en php, mais de bon sens : comment deviner qu'après un appel à "connect();" on est déconnecté ?

Par contre, toi tu me fais jouer aux devinettes quand tu dis simplement que ça ne marche plus en local sans me dire ce qui se passe. Je ne vois pas ton écran. Je ne sais pas ce que tu as fait pour que ça ne marche plus
0
lilsource Messages postés 34 Date d'inscription vendredi 8 novembre 2013 Statut Membre Dernière intervention 17 mars 2023
Modifié par lilsource le 13/11/2013 à 22:16
Et bien de mon côté c'est simple, j'y connais rien. Je fais des copier coller, des tests, des tentatives en me rapprochant chaque jour du but.... pouvoir avoir une interface pour répertorier des livres. Je ne suis pas programmatrice mais plutôt graphiste avec un peu d'expérience en html, xhtml. Quand j'ai appris ça, j'ai eu mes premières notions de php, bases de sonnées, dont je n'ai quasi rien enregistré. Le chinois, c'est pareil, c'est pas avec une base ou deux qu'on peut ni comprendre ni parler... Mais on peut essayer de se lancer à écrire un petit texte pour se faire comprendre et s'améliorer par la même occasion (avec de l'aide c'est plus facile).

Donc écoute, ça fait un moment qu'on échange. Si tu veux me corriger, c'est cool, si tu veux me parler couramment le chinois du php, on gardera un langage de sourd. Dommage.

En mettant de côté l'histoire de la connexion localhost etc... (je verrai quand free m'aura activé la bdd) donc dans le fichier config.inc tu mettrais quoi pour que ça soit plus propre comme code à la place de :

<?php
function connect($sql) {
$link=mysql_connect('localhost','root','');
mysql_select_db('m2cdiffusion',$link);
echo mysql_error($link);
$req=mysql_query($sql) or die ('erreur requette!<br/>'.$sql.'<br>'.mysql_error());
mysql_close();
return $req;
}
?>

As-tu regardé le lien : http://m2cdiffusion.free.fr/ ?
pour accéder à l'esapce admin le login c'est "admin" et le password c'est "azerty"
Qu'est-ce-que tu en penses ?

Comme tu peux le voir en cliquant sur l'onglet "liste des ouvrages", il y a ce message d'erreur :
Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in /mnt/113/sda/3/8/m2cdiffusion/acc1-livr.inc on line 3
Voilà le fichier et la ligne 3 en gras :

<?php
$query1 = "SELECT * FROM 'livres'";
$result1 = mysql_query($query1) or die(mysql_error());
while($row = mysql_fetch_object($result1))
{
echo ("<tr>");
echo ("<td width='100' align='center'>$row->rayon</td>"); /*18 caractères*/
echo ("<td width='330' align='center'>$row->titliv</td>"); /*60 caractères*/
echo ("<td width='128' align='center'>$row->nom</td>"); /*18 caractères*/
echo ("<td width='128' align='center'>$row->prenom</td>"); /*18 caractères*/
echo ("<td width='115' align='center'>$row->edit</td>"); /*18 caractères*/
echo ("<td width='40' align='center'>$row->datedit</td>"); /*0000 caractères*/
echo ("</tr>");
}
?>
Peux tu me soumettre des alternatives à ces codes si tu y vois des erreurs?
0
Utilisateur anonyme
13 nov. 2013 à 22:48
si tu veux me parler couramment le chinois du php
Si tu considéres que le php est du chinois, je suis obligé de considérer que tu mets la charrue avant les boeufs. Il faut commencer par apprendre sur des choses simples, pas directement par un site complet. Mais passons.
tu mettrais quoi pour que ça soit plus propre comme code à la place de ... Je ne peux pas répondre précisément parce que je ne sais pas ce que tu cherches à faire avec cette fonction. On va donc d'abord s'attaquer en premier à ce point-là et à celui-là seulement sans se disperser sur la dizaine de difficultés que tu rencontres :
- Peux-tu me dire aussi précisément que possible, avec ton langage, quel est le but ?
- Ce code définit une fonction. Une fonction doit être appelée pour faire quelque chose : sais-tu ce que signifie appeler une fonction en programmation, et l'appelles-tu ?
0
lilsource Messages postés 34 Date d'inscription vendredi 8 novembre 2013 Statut Membre Dernière intervention 17 mars 2023
Modifié par lilsource le 13/11/2013 à 23:47
le but du code que je t'ai envoyé, celui qui est dans config.inc ?
le but c'est de ne pas avoir à le répéter en tous points dans chaque pages...
se connecter en premier lieu.

Oui ce code appelle une fonction. Je crois qu'avec mon langage, ce fichier .inc introduis ce qui va suivre. Une page ressemble à :
<!doctype html>
<html>
<head>
<title>accueil livres</title>
<meta name="robots" content="all" />
<meta name="description" content="" />
<meta name="keywords" content="" />
<link href="style.css" rel='stylesheet'/>
<style type="text/css">
</style>
</head>
<body class="background">
<?php include 'config.inc'; ?>
<table align="center" border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td height="100">
<center><h3>Liste des ouvrages</h3><center>
</td>
</tr>

<tr>
<td>
<table width="100%" border="1" align="center">
<tr>
<td width="100" align="center">Rayon</td>
<td width="330" align="center">TITRE DE L'OUVRAGE</td>
<td width="260" align="center">Auteur</td>
<td width="160" align="center">Edition</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
<table width="100%" border="1" align="center">
<?php include 'acc1-livr.inc';?>
</table>
</tr>
</table>

</body>
</html>
Tu n'as pas regarder à l'url que je t'ai envoyé ?
Là tu comprendrais le truc tout simple que j'essaye de faire.
0