Bonjour Brucine,
Tout d'abord merci infiniment pour ta(tes) réponse(s), ton implication, ta réflexion.
Pour mieux situer les choses, je suis débutante... alors.. merci pour ton indulgence...
Je suis pas à pas un 'projet-tuto' extrait d'une revue sur le RPI, pour réaliser un système d'appel (pointeuse) avec un lecteur RFID rc522.
Pour info, j’ai fait un autre tuto (sur une autre carte SD) «Affichage en mode digital signage avec Wordpress» avec une installation de mariadb qui a bien fonctionné.
Bonjour,
Je suis tout sauf un cador de Linux et des bases de données, mais puisque personne ne s'y colle, je vais essayer de dégrossir.
Tout d'abord, je ne suis pas sûr de comprendre le contexte:
-Il tourne sous quoi, l'ordinateur client?
i386 avec Debian10 XFCE
-Quel est l'intérêt du protocole ssh à partir de ce poste? (je rappelle que ssh est potentiellement dangereux s'il n'est pas confiné au réseau local: il faudra bien évidemment quand finalisé tester le serveur à partir d'un autre poste (et pas seulement en réseau local, on a parfois des résultats surprenants) mais, en attendant, pas plus simple de vérifier si ça marche en local ou, si le montage réseau le permet et que le pi a une interface graphique, via vnc à partir du poste client?
J'ai hésité, mais pour "débuter"/progresser en ligne de commande, j'ai préféré me lancer et ne pas trop m'égarer non plus du tuto.
Le coeur du problème non plus, je ne suis pas sûr de suivre.
- installation python et ses dépendances
- pilotage dynamique des leds (connectées sur une breadbord) en python
-- installation Nginx
- installation de mysql (ici mariadb*)
- installation de Adminer
- installation interface de gestion (là j'ai pas compris... ajout de utilisateur www-data à suddoers sous l'user root : www-data ALL=(ALL) NOPSSWORD:ALL (pour l'exercice j'accepte pas sécurisé puisque en local).
- création base de donnée RFID impossible
détail :
Le dogme voudrait que l'on installe d'abord MariaDB sur une installation sécurisée, et ses paramètres ayant bien sûr une importance pour notre problème:
- installation de mysql (ici mariadb*) A partir de là j'ai dû faire une série d'erreursss (mélange mysql et mariadb? je ne me souviens pas
)
sudo apt install
DROP USER 'root'@'localhost';
CREATE USER 'root'@'localhost' IDENTIFIED BY '123';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost';
+ suivi de la procédure ci-dessous impossible à réaliser !!
Enter current password for root (enter for none):
Set root password? [Y/n] Y
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y
Il semblerait ici que le mot de passe MariaDB ait bien été incrémenté ("123") sans quoi on ne démarrerait même pas, je suppose aussi, mais c'est une autre question, que l'on voudra ultérieurement lancer ça automatiquement:
systemctl start mariadb
systemctl enable mariadb
Mais ce n'est pas pour autant, et c'est là que ça coince volontiers, que le mot de passe mariadb est interprété à l'identique par les mêmes "credentials" à partir du réseau local, je vais y revenir.
Là, je ne comprends pas ton explication et ce qu’il se passe.
Concernant adminer, le but n'est-il pas de gérer son site sans se casser le train plutôt que de bidouiller via mariadb et ssh?
Dans ces conditions, n'est-il pas plus simple, assumant que le pi s'appelle 192.168.1.25 sur le réseau local de saisir
http://192.168.1.25/adminer.php puis de directement créer avec adminer une base de données s'il n'en existe pas?
Le hic, ce ne serait pas drôle, c'est que l'on va probablement se faire jeter:
- je me connecte à Adminer comme suit : http://192.168.1.25/adminer.php (ip RPI fixe sur ma boxe).
error #1698 – Access denied for user ‘root’@’localhost’
Il faudrait dans ces conditions, mais ce n'est peut-être pas une bonne idée sauf à avoir créé mariadb et adminer sous un autre utilisateur, désactiver l'authentification root:
sudo mysql -u root
use mysql;
update user set plugin='' where User='root';
flush privileges;
exit
redémarrer:
sudo systemctl restart mariadb.service
et installer un nouveau mot de passe.
L'alternative consiste à faire le job via mariadb.
Que se passe-t-il si, avant d'invoquer une autre commande (CREATE DATABASE...), on essaie d'accorder les privilèges requis:
GRANT ALL PRIVILEGES ON *.* TO root@localhost IDENTIFIED BY 123 WITH GRANT OPTION;
Si ça ne fonctionne pas, il convient probablement de purger les mots de passe existants et de repartir avec un nouvel utilisateur:
A ce stade, c’est ce que j’aimerai faire mais, comment tu fais?J’ai essayé sans succès
GRANT ALL PRIVILEGES ON *.* TO toto@localhost IDENTIFIED BY tartempion WITH GRANT OPTION;
FLUSH PRIVILEGES;
et de bien sûr alors se connecter via:
mysql -u toto -p
A suivre?
]
Haut
Plutôt qu'un long discours, j'ai fait le test.
Présentation des combattants.
1 PC Windows 10 Home x64
1 Raspberry pi 4 4GO, installation Raspbian Buster standard
Les 2 sont reliés en ethernet à une Livebox.
Le poste Windows a une IP fixe 192.168.1.20 en passerelle sur la box 192.168.1.1 (et aussi une connexion wifi 192.168.1.21 dans les mêmes conditions, mais qui n'a pas d'intérêt ici).
J'ai initialement essayé (network settings) de conférer au pi une IP ethernet fixe, le système s'est probablement mélangé les pinceaux avec l'interface wifi et m'a planté la connexion.
J'ai donc laissé en DHCP et le système a attribué au pi l'adresse 192.168.1.29, visible sur l'icône de connexion dans la barre des tâches du bureau LXDE.
Cette situation a 2 inconvénients:
-si je branche un nouveau matériel communiquant pi éteint, le système risque de réattribuer l'IP locale utilisée.
Il existe des procédures permettant de fixer cette IP, je ne m'y suis pas intéressé et, en cas de besoin, j'aurais plus vite fait de fixer cette IP dans l'interface de la Livebox.
-Cette adresse est par définition non routable: si je devais me connecter depuis l'extérieur du réseau local, il me faudrait associer au pi un nom d'hôte assorti d'une redirection d'IP style No-IP.
Dans cette optique, comme dans ce qui va suivre, j'avais précédemment installé sans aucun problème VNC Server sur le pi lancé au démarrage et VNC Viewer (RealVNC) sur le poste Windows, le tout marchant sans problème à cela près bien sûr qu'en cas de connexion de l'extérieur il faudrait que je remplace dans VNC Viewer 192.168.1.29 par le nom d'hôte.
On peut essayer de contourner cette difficulté en installant *** PAS DE SPAM *** qui s'en affranchit (version arm à télécharger sur leur site puis à installer "à la main").
Dans tout ce qui suit, toutes les manipulations ont été faites en prise de contrôle VNC depuis le poste Windows.
Aspect logiciel
Raspbian Buster embarque par défaut Apache 2 sur le pi 4, on n'aura donc pas à l'installer, restent à installer MariaDB et Adminer.
Installation de MariaDB
La dernière version disponible serait 10.4, mais l'item Add/Remove Software du pi (chercher "mariadb-server") ne retourne que 10.3
Qu'à cela ne tienne, on va mettre les paquetages à jour, pourtant fait la semaine dernière:
sudo apt update
sudo apt upgrade
...et le résultat est le même, je me suis donc contenté de la version 10.3, je ne sais pas ce que la 10.4 amène.
Installons donc MariaDB:
sudo apt install mariadb-server
A suivre installation sécurisée:
sudo mysql_secure-installation
A toutes les questions posées, colonne de gauche, entrée utilisateur, colonne de droite:
Enter current password (faire entrée à blanc)
Set root password Y (je ne sais pas si la casse est pertinente; dans le doute, majuscule)
New password (celui de votre choix, par exemple) 123
Re-enter new password 123
Remove anonymous users Y
Disallow root login remotely Y
Remove the test database Y
Reload privileges tables Y
On notera que MariaDB a ses propres identifiants et mots de passe, qui ne sont pas ceux du pi.
Par défaut, MariaDB se connectera à la boucle locale (localhost ou 127.0.0.1) et s'adressera donc à root@localhost.
Pour des raisons qui dépassent le présent billet, et outre des raisons de sécurité, des conflits sont documentés quand on utilise root par défaut.
??? est-ce en lien au problème rencontré ?
J'ai malgré tout tenté mysql -uroot -p suivi du mot de passe et je me suis fait jeter par la fameuse erreur 1698...mais probablement parce que j'avais oublié sudo, recommençons:
sudo mysql -uroot -p
password: 123
Ce coup-ci, sur l'interface MariaDB, on va vérifier si ça fonctionne en créant une base de données:
CREATE DATABASE test;
et là, la réponse est positive.
Pendant que l'on y est, et pour les raisons évoquées précédemment, on va créer un utilisateur dédié:
CREATE USER 'brucine' IDENTIFIED BY '123';
ça continue de marcher, attribuons au nouvel utilisateur les droits requis sur la base "test":
GRANT ALL PRIVILEGES ON test.* TO 'brucine'@'localhost';
On ressort, on vérifie si ça fonctionne:
sudo mysql -ubrucine -p
OK.
Installation de Adminer.
Je ne suis pas sûr d'avoir tout compris: il faut à la fois que le paquetage soit installé et que soit installé dans /var/www/html/ un fichier adminer.php en plus du fichier index.html.
Adminer.php + index.html sont dans /var/www/html/
Je ne me suis pas enquiquiné, je suis à nouveau allé dans Add/Remove Software et j'ai installé adminer (4.7.1.1.) mais rien n'interdit:
sudo apt install adminer
Téléchargeons maintenant notre fichier adminer.php sur le pi dans le dossier qui convient:
sudo wget "
http://www.adminer.org/latest.php" -O/var/www/html/adminer.php
Il ne reste plus qu'à contrôler en local puis à partir du PC Windows client.
Dans les 2 cas, on saisira dans son navigateur:
http://192.168.1.29/adminer.php
Et l'on se connecte bien à adminer dans les 2 cas, ne restant plus qu'à y faire ce que l'on veut (création site ou base de données, paramétrage, sécurisation...)
Existe-t-il une procédure pour supprimer et réinstaller proprement mariadb ? à défaut..