Migration Yunohost 3.5, erreurs de connexion à mysql?

#1

Bonjour!

ça fait plusieurs heures que je tourne en rond sur mon pb depuis la migration de mon install yunohost 2.7 vers 3.5…alors je tente un nouveau topic…
Il semblerait que tout se soit bien passé pour la migration MAIS…quand je vais sur mes app Nextcloud, Wordpress et OpenSondage, j’ai des erreurs 500 ou “error establishing database connection” (wordpress)

Voici ma configuration :
Machine : Raspberry 3 Modèle B
Système d’exploitation : Debian 9.9 32bit (Linux 4.14.98-v7+)
yunohost : 3.5.2.2 (stable)
yunohost admin : 3.5.2 (stable)

Voici ce que j’obtiens comme diagnostic depuis l’interface d’admin :
https://paste.yunohost.org/fehizimafa

et ce que j’obtiens quand je fais un yunohost service status en ssh :
https://paste.yunohost.org/hosewudive.http

Un apt update && apt dist-upgrade me retourne : 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

J’ai pensé que c’était une erreur de mot de passe sql root qui avait été changé/oublié par les appli ou des permissions?
J’ai tenté différents trucs, comme récupérer le mot de passe qui est dans /etc/yunohost/mysql et l’attribuer à root@localhost en me connectant à la base mysql mais ça n’a rien changé. J’ai aussi redémarré la machine et les services un nombre incalculable de fois.

Enfin,

  • la restauration de ma sauvegarde pré-migration pour la configuration du sytème retourne une erreur concernant le mdp mysql qui a changé et s’arrête…
  • le journal mysql ne contient rien…
  • je n’arrive pas à afficher les journaux des apps Nextcloud etc l’erreur est Le service ‘php5-fpm’ est inconnu…MAIS POURQUOI cherche-t-il PHP 5, bondidiou!?
  • j’ai toujours plusieurs gigas de disponibles sur mon disque…
  • j’ai des upgrades nextcloud, opensondage, et wordpress à faire mais ça plante aussi (probablement car pas accès à la bdd)…

Je mets tout ça un peu en vrac parce que je ne sais plus quoi vérifier ou faire…

Quelqu’un saurait m’aider?

hâte de vous lire

#2

Complément :

J’ai désinstaller Opensondage dans l’espoir de pouvoir le réinstaller et cela ne fonctionne pas. Voici le journal : https://paste.yunohost.org/luqosufevi.sql

Ce qui me fait vraiment penser que c’est un pb de droits user mysql
2019-05-11 23:56:54,382: DEBUG - + local sql
2019-05-11 23:56:54,383: DEBUG - + local database
2019-05-11 23:56:54,384: DEBUG - + ynh_handle_getopts_args ‘–sql=CREATE DATABASE opensondage; GRANT ALL PRIVILEGES ON opensondage.* TO ‘’‘opensondage’’’@’’‘localhost’’’ IDENTIFIED BY ‘’‘SOME PASSWORD’’’ WITH GRANT OPTION;’
2019-05-11 23:56:54,384: DEBUG - + set +x
2019-05-11 23:56:54,385: DEBUG - + database=
2019-05-11 23:56:54,386: DEBUG - ++ sudo cat /etc/yunohost/mysql
2019-05-11 23:56:54,487: DEBUG - + ynh_mysql_connect_as --user=root --password=SOME OTHER PASSWORD --database=
2019-05-11 23:56:54,488: DEBUG - + local legacy_args=upd
2019-05-11 23:56:54,488: DEBUG - + args_array=([u]=user= [p]=password= [d]=database=)
2019-05-11 23:56:54,489: DEBUG - + declare -Ar args_array
2019-05-11 23:56:54,490: DEBUG - + local user
2019-05-11 23:56:54,490: DEBUG - + local password
2019-05-11 23:56:54,491: DEBUG - + local database
2019-05-11 23:56:54,491: DEBUG - + ynh_handle_getopts_args --user=root --password=hnlDckQohUZy --database=
2019-05-11 23:56:54,492: DEBUG - + set +x
2019-05-11 23:56:54,492: DEBUG - + database=
2019-05-11 23:56:54,493: DEBUG - + mysql -u root --password=SOME OTHER PASSWORD -B ‘’
2019-05-11 23:56:54,595: DEBUG - + ynh_exit_properly
2019-05-11 23:56:54,595: WARNING - ERROR 1044 (42000) at line 1: Access denied for user ‘root’@‘localhost’ to database ‘opensondage’
2019-05-11 23:56:54,597: DEBUG - + local exit_code=1
2019-05-11 23:56:54,598: WARNING - !!
2019-05-11 23:56:54,600: DEBUG - + ‘[’ 1 -eq 0 ‘]’
2019-05-11 23:56:54,601: WARNING - opensondage’s script has encountered an error. Its execution was cancelled.
2019-05-11 23:56:54,602: DEBUG - + trap ‘’ EXIT

J’ai donc essayé ça :


Tout se passe bien, j’arrive à changer le mot de passe root et le tester mais ça ne résout pas mon pb ensuite.
A noter : quand je suis en mode --skip-grant-tables, évidemment toutes mes applis fonctionnent bien. Mais je ne peux pas laisser ça comme ça…

Alors j’ai essayé ça :

source /usr/share/yunohost/helpers
source /usr/share/yunohost/hooks/restore/11-conf_ynh_mysql

tiré de ce topic : Impossible de (ré)installer Roundcube

Mais ça me retourne ça :

root@YunoHost:/home/admin# source /usr/share/yunohost/hooks/restore/11-conf_ynh_mysql
cat: /conf/ynh/mysql/root_pwd: No such file or directory
cat: /conf/ynh/mysql/mysql: No such file or directory
+++ echo '! Helper used in legacy mode !'
+++ set +x
+++ length=10
+++ tr -c -d A-Za-z0-9
+++ sed -n 's/\(.\{10\}\).*/\1/p'
+++ dd if=/dev/urandom bs=1 count=1000
mysqladmin: Can't turn off logging; error: 'Access denied; you need (at least one of) the SUPER privilege(s) for this operation'
It seems that you have already configured MySQL. YunoHost needs to have a root access to MySQL to runs its applications, and is going to reset the MySQL root password. You can find this new password in /etc/yunohost/mysql.

et là, je ne sais plus quoi faire…il y a clairement un pb mais je ne sais pas comment le résoudre proprement…

Une idée?

#3

Solution

Alors, voici les manipulations que j’ai faites pour résoudre mes problèmes au final :

  1. Je me suis rendue compte que mon utilisateur mysql root n’avait pas les droits nécessaires pour accéder aux autres bbd existantes, il n’avait les droits que sur la bdd mysql, donc :
mysql -u root -p
UPDATE mysql.user SET Grant_priv='Y', Super_priv='Y' WHERE User='root';
FLUSH PRIVILEGES;
GRANT ALL ON *.* TO 'root'@'localhost';

Là, c’est bon, l’utilisateur root a accès à tout (on peut le vérifier avec show databases;…J’avais supprimé mon application OpenSondage sur laquelle je n’avais rien pour tester de réinstaller et avant les opérations ci-dessus, ça ne marchait pas à cause d’insuffisance de droits de l’utilisateur root. Maintenant tout va bien, j’ai pu réinstaller normalement.

  1. Mais pour mes app Nextcloud et Wordpress, c’est une autre histoire. J’ai plein de données dessus que je ne veux pas perdre. Même si j’ai des sauvegardes d’avant la migration, je n’ai pas trop confiance en une possible restauration alors je veux réparer ça sans supprimer les appli et les réinstaller. C’est là que je constate, en faisant un SELECT * FROM mysql.user;, que je n’ai plus mes utilisateurs wordpress et nextcloud dans la table (c’est une perte lors de la migration?? à vrai dire je ne sais pas quand/comment ça a pu arriver…). Alors je décide de les recréer manuellement :
insert into user (Host, User, Password, Select_priv, Insert_priv, Update_priv, Delete_priv, Create_priv, Drop_priv, Reload_priv, Shutdown_priv, Process_priv, File_priv, Grant_priv, References_priv, Index_priv, Alter_priv, Show_db_priv, Super_priv, Create_tmp_table_priv, Lock_tables_priv, Execute_priv, Repl_slave_priv, Repl_client_priv, Create_view_priv, Show_view_priv, Create_routine_priv, Alter_routine_priv, Create_user_priv, ssl_type, ssl_cipher, x509_issuer, x509_subject, max_questions, max_updates, max_connections, max_user_connections)  values('localhost','nextcloud','','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','','','','','0','0','0','0');
insert into user (Host, User, Password, Select_priv, Insert_priv, Update_priv, Delete_priv, Create_priv, Drop_priv, Reload_priv, Shutdown_priv, Process_priv, File_priv, Grant_priv, References_priv, Index_priv, Alter_priv, Show_db_priv, Super_priv, Create_tmp_table_priv, Lock_tables_priv, Execute_priv, Repl_slave_priv, Repl_client_priv, Create_view_priv, Show_view_priv, Create_routine_priv, Alter_routine_priv, Create_user_priv, ssl_type, ssl_cipher, x509_issuer, x509_subject, max_questions, max_updates, max_connections, max_user_connections)  values('localhost','wordpress','','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','','','','','0','0','0','0');

  1. Cependant, il faut encore retrouver les mots de passe de ces utilisateurs :
  • Pour wordpress, il se situe dans var/www/wordpress/wp-config.php
  • Pour nextcloud, il se situe dans var/www/nextcloud/config/config.php

Et ensuite, pour chaque utilisateur crééé en étape 2 (nextcloud et wordpress dans mon cas), il suffit de lancer les commandes suivantes avec le mot de passe trouvé précédemment :

update mysql.user set password=PASSWORD("**userpassword**") where User='**username**';
GRANT ALL PRIVILEGES ON dbname.* TO 'username'@'localhost' IDENTIFIED BY 'userpassword' WITH GRANT OPTION;
  1. Les appli ont accès à leur base, ça fonctionne bien côté utilisateur. Mais côté admin, je ne peux toujours pas accéder aux logs des apps ni faire de mise à jour. Les erreurs lors des mises à jour sont toujours des trucs du type Source path '\''/etc/fail2ban/filter.d/wordpress.conf'\'' does not exist
    Du coup j’ai créé les fichiers à la main :
touch /etc/fail2ban/jail.d/wordpress.conf
touch /etc/fail2ban/filter.d/wordpress.conf

C’est donc ce que j’ai fais pour Wordpress et la mise à jour a pu se dérouler avec succès ensuite. ça a alors résolu le pb d’accès aux logs (qui disait “le service php5-frm est inconnu”). Il fallait la mettre à jour pour qu’elle soit bien compatible avec php7 et suite à la migration Yunohost 3 + Stretch
J’ai répété la même chose pour les autres appli touch /etc/fail2ban/filter.d/nextcloud.conf… etc etc, et tout est à présent bien à jour et fonctionnel.

OUF, je crois que j’ai maintenant un environnement bien fonctionnel avec Yunohost 3 + Debian 9 sur mon Raspberry PI 3. Youpi!!!

J’espère que ma solution va en aider certains. (désolée si je raconte ici des choses évidentes pour certains, à mon niveau ce n’était pas évident). Merci encore à la super communauté de Yunohost!! J’en découvre toujours un peu plus grâce à vous.

+++

1 Like