Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 05/08/2021, à 09:57

l'AMI Yves

Gestion des droits MySQL !

Bonjour à tous !

Ma configuration : un poste sous Ubuntu avec LAMP à l'adresse 192.168.1.2 contient la base de données.

Un  poste sous Windows 10 qui obtient son adresse en 192.168.1... par DHCP, peut se connecter au précédent par SSH avec le nom 'yves' et le mot de passe qui va bien.

Sous Firefox sur ce poste, l'adresse "192.168.1.2/phpmyadmin" m'ouvre bien la fenêtre de connexion de phpmyadmin, et "yves" avec le bon mot de passe me donne accès aux bases de données présentes sur le premier poste.

Le problème est que l'adresse "192.168.1.2" exécute bien le "index.php" voulu, qui tente de lancer une transaction MySQL mais elle échoue pour cause de refus d'accès.

J'ai passé plusieurs jours à éplucher le web (avec tous les emm... de cookies qu'on a maintenant !!!!!) et j'ai essayé différents trucs avec les droits, les groupes, les déclarations d'adresse de serveur - et j'en oublie sans doute... Je n'ai pas réussi !

Existe-t-il un document ou un site ou un brave participant de ce forum qui explique de façon compréhensible la gestion des droits sous Apache2 avec php 7.4 ?

Merci d'avance.

AMIcalement.

Hors ligne

#2 Le 05/08/2021, à 11:51

bruno

Re : Gestion des droits MySQL !

Bonjour,

Le problème est que l'adresse "192.168.1.2" exécute bien le "index.php" voulu, qui tente de lancer une transaction MySQL mais elle échoue pour cause de refus d'accès.

Pour comprendre le problème il faut nous montrer le code PHP qui accède à la base de donnée et examiner les logs du serveur web au moment où la connexion échoue (/var/log/access.log et error.log si la configuration par défaut n'a pas été modifiée.)

Dernière modification par bruno (Le 05/08/2021, à 13:36)

Hors ligne

#3 Le 05/08/2021, à 12:24

l'AMI Yves

Re : Gestion des droits MySQL !

Bonjour et merci de répondre. Cependant, je ne pense pas que les réponses à tes questions apportent beaucoup plus d'information : l'instruction qui est en erreur est

    $this->link_id = @mysqli_connect($db_host, $db_username, $db_password, $db_name);

Et le message d'erreur :

     Access denied for user 'yves'@'192.168.1.2' to database 'Comptes' 

(J'ai essayé les balises  mais la prévisualisation n'a pas marché...)

AMIcalement.

Dernière modification par bruno (Le 05/08/2021, à 12:46)

Hors ligne

#4 Le 05/08/2021, à 12:49

bruno

Re : Gestion des droits MySQL !

Par défaut le serveur MySQL n'autorise les connexions que depuis localhost.L'utilisateur devrait donc être yves@localhost. Il faut modifier ton script pour avoir :

$db_host='localhost'

Hors ligne

#5 Le 05/08/2021, à 13:05

l'AMI Yves

Re : Gestion des droits MySQL !

Après quelques acrobaties, voici les lignes d'aujourd'hui dans l'access.log (qui n'était pas exactement où c'était indiqué):

192.168.1.95 - - [05/Aug/2021:07:33:25 +0000] "POST /test.php HTTP/1.1" 200 1038
192.168.1.95 - - [05/Aug/2021:07:34:23 +0000] "GET / HTTP/1.1" 200 1118
192.168.1.95 - - [05/Aug/2021:07:34:24 +0000] "GET /index.php?larg=1595&haut=747&dixa=69 HTTP/1.1" 200 1088
192.168.1.95 - - [05/Aug/2021:07:34:28 +0000] "POST /test.php HTTP/1.1" 200 1037
192.168.1.95 - - [05/Aug/2021:07:36:28 +0000] "GET /bienvenue.php HTTP/1.1" 200 1096
192.168.1.95 - - [05/Aug/2021:10:15:49 +0000] "GET / HTTP/1.1" 200 1176
192.168.1.95 - - [05/Aug/2021:10:15:49 +0000] "GET /index.php?larg=1595&haut=747&dixa=69 HTTP/1.1" 200 1089
192.168.1.95 - - [05/Aug/2021:10:15:49 +0000] "GET /index.css HTTP/1.1" 200 583
192.168.1.95 - - [05/Aug/2021:10:15:50 +0000] "GET /courant.css HTTP/1.1" 200 1850
192.168.1.95 - - [05/Aug/2021:10:15:54 +0000] "POST /test.php HTTP/1.1" 200 1038

Moi, je ne vois rien...

Hors ligne

#6 Le 05/08/2021, à 13:07

l'AMI Yves

Re : Gestion des droits MySQL !

@bruno Modifier "localhost" en "192.168.1.2" est l'une des modifications que j'ai faites.

Hors ligne

#7 Le 05/08/2021, à 13:38

bruno

Re : Gestion des droits MySQL !

Il faut regarder le fichier /var/log/apache2/error.log. Et il faut faire ce que j'ai indiqué en #4 dans ton script PHP.

Hors ligne

#8 Le 05/08/2021, à 14:34

l'AMI Yves

Re : Gestion des droits MySQL !

Voici error.log :

[Thu Aug 05 07:28:52.655746 2021] [mpm_prefork:notice] [pid 999] AH00163: Apache/2.4.41 (Ubuntu) configured -- resuming normal operations
[Thu Aug 05 07:28:52.655900 2021] [core:notice] [pid 999] AH00094: Command line: '/usr/sbin/apache2'
[Thu Aug 05 07:29:00.425267 2021] [mpm_prefork:notice] [pid 999] AH00171: Graceful restart requested, doing restart
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 192.168.1.2. Set the 'ServerName' directive globally to suppress this message
[Thu Aug 05 07:29:00.557355 2021] [mpm_prefork:notice] [pid 999] AH00163: Apache/2.4.41 (Ubuntu) configured -- resuming normal operations
[Thu Aug 05 07:29:00.557394 2021] [core:notice] [pid 999] AH00094: Command line: '/usr/sbin/apache2'

Quant à savoir s'il faut garder "localhost" ou mettre "192.168.1.2", pour moi, c'est la bouteille à l'encre, et c'est pour cela que j'ai initié ce post. Il me parait clair que l'utilisateur "yves" s'adresse au serveur "192.168.1.2" depuis le réseau. Quant à ce qu'il se passe dans le serveur, effectivement, on peut considérer que l'application "interpréteur php" s'adresse à MySQL, mais je serais content de lire de la littérature sur ce sujet.

Hors ligne

#9 Le 05/08/2021, à 14:58

bruno

Re : Gestion des droits MySQL !

Alors il faut lire la doc mysql. Encore une fois le serveur MySQL, par défaut, n'est en écoute que sur l'interface locale, c'est à dire localhost ou 127.0.0.1.

Ce n'est absolument pas un problème de droits Apache, ni de PHP. C'est un problème d'utilisateur MySQL qui a mal été créé, qui n'as pas les bons droits, ou qui tente de se connecter avec des identifiants incorrects.

Tu as un script PHP sur ton serveur LAMP qui se connecte à la base de données avec ceci :
   

$this->link_id = @mysqli_connect($db_host, $db_username, $db_password, $db_name);

Les variables doivent avoir pour valeurs :

$db_host='localhost';
$db_username='yves';
$db_password='le_mot_de_passe';
$db_name='Comptes';

Il faut bien entendu que yves soit un utilisateur MySQL ayant les droits sur la base Comptes.

Dernière modification par bruno (Le 05/08/2021, à 15:01)

Hors ligne

#10 Le 07/08/2021, à 17:22

l'AMI Yves

Re : Gestion des droits MySQL !

Bon, pensant que j'avais fait de mauvaises manips, et en désespoir de cause, j'ai complètement reconfiguré le poste 192.168.1.2 : ré-installation d'ubuntu, et de lamp (version Apache2) mais je n'arrive toujours à rien, et je ne comprends pas que ce soit si compliqué : le logiciel est bien installé, j'ai créé les deux utilisateurs (mais en mode console : je n'ai pas trouvé d'utilitaire qui prendrait en charge tout le bazar de gestion des groupes, d'appartenance aux groupes, de droits es utilisateurs et des programmes : j'ai un sérieux bagage informatique (sous Windows !) mais là, je suis largué.

Je peux accéder au poste 192.168.1.2 en SSH depuis le réseau, je peux accéder aux répertoires existants depuis le réseau avec Filezilla, mais je ne peux pas en créer de nouveau (pour y transférer mon site et je ne peux pas accéder à phpmyadmin pour transférer ma base de données. Pour autant que j'aie compris, c'est une question de droits, mais quant à savoir quels droits à qui ou à quels programmes...?

AMIcalement.

Hors ligne

#11 Le 07/08/2021, à 17:59

bruno

Re : Gestion des droits MySQL !

Tout réinstaller ne va pas t'aider à comprendre tes erreurs. Surtout qu'il s'agissait apparemment d'un be problème d'utilisateur MySQL.
Si tu veux de l'aide il faut poser un seul problème à la fois et expliquer en détail ce que tu as fais en indiquant les commandes utilisées et leur retour.

Par exemple, ici il aurait fallu que tu expliques comment tu avais créé ta base de données et l'utilisateur yves de MySQL.

Hors ligne

#12 Le 07/08/2021, à 19:22

l'AMI Yves

Re : Gestion des droits MySQL !

Je te remercie de continuer à répondre, et de ne pas t'énerver. Pour le moment, ma base de données existe sous forme d'une instruction MySQL sur une clé USB. Cette instruction a été obtenue sous phpmyadmin sur un autre système, que je désire "simuler" ici maintenant.

J'ai créé un utilisateur ubuntu, 'yves', et je l'ai mis dans le groupe 'mysql'. A l'évidence, ça n'est pas suffisant.

Pour le moment, le site utilisé pour gérer la base de données existe sous forme d'une arborescence de répertoires sur mon poste de travail, que je compte reproduire sur le poste "faisant fonction" de serveur (le poste sous ubuntu) à l'aide de filezilla.

J'ai également installé phpmyadmin, que je peux "voir" en tapant "192.168.1.2/phpmyadmin" sur mon navigateur, mais 'yves' n'est pas autorisé à l'utiliser :

mysqli_real_connect(): (HY000/1045): Access denied for user 'yves'@'localhost' (using password: YES)

J'en suis à peu près là. Bien sûr que réinstaller mon système ne me permettra pas de comprendre mes erreurs, mais, d'un autre côté, les erreurs ont tendance à s'accumuler au cours du temps, et ça devient inextricable. N'est-ce pas une observation courante ?

AMIcalement.

Hors ligne

#13 Le 08/08/2021, à 08:28

bruno

Re : Gestion des droits MySQL !

Visiblement tu n'as pas lu la doc mysql que je t'ai conseillé. Au point 3.6 il est expliqué comment créer un utilisateur MySQL (et non un  utilisateur système comme tu l'as fait). Au point 5.1 tu verras comment importer une bas de données à partir d'un fichier SQL (je suppose que c'est ce que tu as sur ta clé USB°.

Hors ligne

#14 Le 08/08/2021, à 10:44

l'AMI Yves

Re : Gestion des droits MySQL !

Bonjour Bruno.

J'avoue avoir commencé à lire la doc que tu m'as signalée, mais m'être perdu avant le $3.6.

Je l'ai lu ce matin, et j'ai bien soigneusement exécuté ce qu'il dit (avec deux utilisateurs linux et "auth_socket"). Je confirme qu'ils apparaissent bien comme il faut avec la commande

SELECT user, host, plugin, authentication_string FROM mysql.user;

.

Cependant, pour l'accès à phpmyadmin, ça ne change exactement rien du tout : mon message d'hier à 19h22 reste d'actualité.

A propos des droits et toutes ces sortes de choses, je voudrais qu'on m'explique un truc : sur mon poste, je lance filezilla avec un gestionnaire de site précisant que la connexion est en SFTP SSH, sur l'adresse 192.168.1.2 (sans préciser de port) avec l'utilisateur 'yves' et son mot de passe. Je vois bien l'arborescence du serveur ouverte sur /var/www/html qui contient le fameux index.html "It works". Ceci étant, que dois-je modifier pour pouvoir créer le répertoire /var/www/mon_site_web et y transférer les fichiers du site ? Je n'arrive pas à comprendre cette gestion des droits : est-ce que 'yves' doit appartenir à un groupe précis, et lequel, ou bien le répertoire /var/www/html doit avoir quelque caractéristique spéciale, ou bien je ne sais quel processus (ssh ?) doit être doté de privilèges spéciaux... ?

Manifestement, c'est toute une éducation à refaire...

AMIcalement.

Hors ligne

#15 Le 08/08/2021, à 10:54

bruno

Re : Gestion des droits MySQL !

Il faut donner le retour complet des commandes, pour voir les utilisateurs mysql :

SELECT user, host, plugin, authentication_string, password FROM mysql.user;

Pour l'autre question il faudra ouvrir un autre fil. En attendant tu peux lire la doc apache2.

Hors ligne

#16 Le 08/08/2021, à 12:06

l'AMI Yves

Re : Gestion des droits MySQL !

Je ne sais pas comment produire la réponse exacte : je ne sais pas comment copier les lignes de réponse d'une commande mysql. Je peux faire une copie d'écran et la sauvegarder en jpeg sur mon poste, mais je ne sais pas comment publier une image sur ce forum.

Mais si je dis :
- qu'il a fallu enlever ", password" pour que la commande soit acceptée,
- que je me vois dans la liste,  avec "localhost" et "auth_socket",
- qu'il en est de même de "root" et d'un autre utilisateur que j'ai créé,
- que cet autre utilisateur est en premier,
- que les deux derniers sont "root", puis "yves",
- qu'il apparait en plus phpmyadmin, mysql.sys, mysql.session et mysql_infoschema, tous avec "localhost" et "caching_sha2_password"
- que, pour ces quatre derniers, la colonne "authentication string contient une longue suite de caractères bizarres (elle est vide pour les autres),
- et enfin qu'il apparait en seconde ligne dans le tableau une ligne semblant aberrante, qui ne respecte pas la mise en page du tableau,
est-ce que cela te suffit ?

Hors ligne

#17 Le 08/08/2021, à 12:43

bruno

Re : Gestion des droits MySQL !

Ce n'est guère compréhensible. Il faut faire un copier / coller de la sortie de la commande (sélection à la souris et clic droit ou Ctrl+maj+C)

Si tu tu vois l'utilisateur yves avec auth_socket tu ne pourra pas authentifier avec un mot de passe. Il faut créer un utilisateur authentifié par mot de passe conformément à la doc déjà indiquée (ou modifier celui qui existe déjà en lui attribuant un mot de passe).

Hors ligne

#18 Le 08/08/2021, à 15:42

l'AMI Yves

Re : Gestion des droits MySQL !

Voici la copie de la réponse :

mysql> SELECT user, host, plugin, authentication_string FROM mysql.user;
+------------------+-----------+-----------------------+------------------------------------------------------------------------+
| user             | host      | plugin                | authentication_string                                                  |
+------------------+-----------+-----------------------+------------------------------------------------------------------------+
| Yves             | localhost | caching_sha2_password | $A$005$zwwo-'gbMHP`%u:7N.wDg2lG.88u4mVf6LaQPRkqM1AMw7fDUX8Chhceb0 |
| dany             | localhost | auth_socket           |                                                                        |
nuV|E8P1kD%tSAw1CBv5CeFyG4F9Xe3P4stT1VBqOZE9ZMeRaVh0L9 |A$005$t
| mysql.infoschema | localhost | caching_sha2_password | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| mysql.session    | localhost | caching_sha2_password | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| mysql.sys        | localhost | caching_sha2_password | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| phpmyadmin       | localhost | caching_sha2_password | $A$005$V&;itB9[m5\hDn0+Iuste2UZSszvgsoJHCucMU.OTSd3L246sr.hV0fm4YS3 |
| root             | localhost | auth_socket           |                                                                        |
| yves             | localhost | auth_socket           |                                                                        |
+------------------+-----------+-----------------------+------------------------------------------------------------------------+

En effet, l'utilisateur Yves me permet d'accéder à phpmyadmin.

AMIcalement.

Hors ligne