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 08/05/2019, à 06:00

Kristen44

pas de connection automatique

J'ai installe Apache2 (nickel), PHP7 (laborieusement) et MariaDB + phpMyAdmin. C'est là que ça coince.
Si j'essaie, à la l'allumage de l'ordi, d'exécuter un petit programme test nommé disons localhost/test.php, qui se contente d'ouvrir une base existante et de me signaler que la connexion s'est bien faite, j'ai un message d'erreur :

connection failed

De même si je veux lancer phpMyAdmin dans un autre onglet avec mes identifiants, le programme répond par un message d'erreur sous 'Bienvenue dans phpMyAdmin' :

#2002 - No such file or directory — Le serveur ne répond pas (ou l'interface de connexion vers le serveur MySQL local n'est pas correctement configurée)

et trois autres dans le bas de l'écran :

mysqli_real_connect(): (HY000/2002): No such file or directory
La connexion au controluser tel que défini dans votre configuration a échoué.
mysqli_real_connect(): (HY000/2002): No such file or directory

Mais si j'ouvre un terminal et tape :

sudo /etc/init.d/mysql stop

puis

sudo mysqld_safe --skip-grant-tables &

le système me répond :

190425 18:30:24 mysqld_safe Logging to syslog.
190425 18:30:24 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql

.. de là, je retour à mon navigateur, recharge mes deux onglets, et, miracle, test.php me dit que la connection est OK, et je peux accéder à phpMyAdmin.

J'aimerais retrouver un comportement normal....
Merci de votre attention,
Kristen

Hors ligne

#2 Le 08/05/2019, à 15:55

bruno

Re : pas de connection automatique

Bonjour,

L'erreur tait pourtant assez explicite :

La connexion au controluser tel que défini dans votre configuration a échoué.

Tu tentes une connexion a une base de données avec un utilisateur qui n'existe pas ou n'as pas les droits suffisants pour cela.

Évidemment cela fonctionne avec l'option --skip-grant-tables puisque celle-ci permet à tout utilisateur de se connecter en ayant tous les droits. C'est une option dangereuse qui ne doit être utilisée qu'en cas de problème avec Mysql : perte de l'administrateur MySQL ou plugin qui bloque.

Il faut redémarre normalement MySQL (mariadb) et consulter la doc mariadb pour vérifier tes utilisateurs.

Hors ligne

#3 Le 08/05/2019, à 18:23

Kristen44

Re : pas de connection automatique

Bonjour (j'avais oublié de saluer la liste.. toutes mes sincères excuses)
et merci Bruno,

Je ne sais pas comment démarrer 'normalement' mariadb... J'ai consulté la doc dont tu donnes le lien. Je m'y perds pas mal. En redémarrant comme je l'ai expliqué plus haut (avec l'option --skip-grant-tables), voilà les utilisateurs connus:

MariaDB [(none)]> SELECT user, host, plugin, password FROM mysql.user;
+------------+-----------+-------------+-------------------------------------------+
| user       | host      | plugin      | password                                  |
+------------+-----------+-------------+-------------------------------------------+
| root       | localhost | unix_socket | *9901E3B125A65082741167868EB4534F6F6021E5 |
| phpmyadmin | localhost |             | *C978FF0F48EFC7DC8CDB8DECFDA4275792D43943 |
+------------+-----------+-------------+-------------------------------------------+
2 rows in set (0.00 sec)

En fait je n'arrive plus du tout à me connecter à PhpMyAdmin, même en copiant ce password...

Dernière modification par Kristen44 (Le 08/05/2019, à 18:24)

Hors ligne

#4 Le 09/05/2019, à 07:39

bruno

Re : pas de connection automatique

Tu n'as que deux utilisateurs :
- root pour administrer mariadb en ligne de commandes ;
- phpmyadmin certainement créé à l'installation du paquet phpmyadmin qui ne doit avoir les droits que sur la base phpmyadmin.

Le contenu du champ password que tu vois dans la console mysql est chiffré. On voit jamais les mots de passe en clair, heureusement !

Regarde la doc https://doc.ubuntu-fr.org/mysql#utilisateurs (point 3.6) pour savoir comment créer des utilisateurs.

Si tu veux administrer toutes tes bases de données avec phpmyadmin il te faut créer un super-administrateur qui a tous les droits sur toutes les bases. Exemple :

CREATE USER 'nom_utilisateur_choisi'@'localhost' IDENTIFIED WITH mysql_native_password BY 'mot_de_passe_solide';
GRANT ALL ON *.* TO 'nom_utilisateur_choisi'@'localhost';
FLUSH PRIVILEGES;
QUIT;

Tu pourras te connecter à phpmyadmin avec ce nom d’utilisateur et son mot de passe et faire ce que tu veux (créer des bases, de utilisateurs, etc).

Ensuite, les bonnes pratiques consistent à créer un utilisateur pour chaque base de données qui n'a les droits que sur cette base.

Hors ligne

#5 Le 10/05/2019, à 09:38

Kristen44

Re : pas de connection automatique

Le problème est que je ne peux pas créer d'utilisateur. Ou du moins, je n'y arrive pas (nuance...)
Si j'essaire de me connecter 'normalement' en tapant mysql ou mariadb, le système me répond :

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2 "No such file or directory")

Du coup je me connecte comme déjà décrit et lorsque j'essaie de créer un nouvel utilisateur :

ERROR 1290 (HY000): The MariaDB server is running with the --skip-grant-tables option so it cannot execute this statement

Hors ligne

#6 Le 10/05/2019, à 10:10

bruno

Re : pas de connection automatique

Je t'ai dit de redémarrer mariadb normalement, donc tuer le processus mysqld que tu as lancé manuellement. Si tu ne sais pas comment faire, redémarre ta machine.

Hors ligne

#7 Le 11/05/2019, à 06:31

Kristen44

Re : pas de connection automatique

je n'y arrive pas... si je redémarre ma machine et tape dans un terminal mysql ou même sudo mysql, le système répond :

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2 "No such file or directory")

en 'trichant' pour me connecter avec un sudo mysqld_safe --skip-grant-tables &, j'ai pu créé un nouvel utilisateur :

SELECT user, host, plugin, password FROM mysql.user;
+------------+-----------+-------------+-------------------------------------------+
| user       | host      | plugin      | password                                  |
+------------+-----------+-------------+-------------------------------------------+
| root       | localhost | unix_socket | *9901E3B125A65082741167868EB4534F6F6021E5 |
| phpmyadmin | localhost |             | *C978FF0F48EFC7DC8CDB8DECFDA4275792D43943 |
| kristen    | localhost | unix_socket | *9901E3B125A65082741167868EB4534F6F6021E5 |
+------------+-----------+-------------+-------------------------------------------+
3 rows in set (0.02 sec)

mais la suite échoue :

GRANT ALL ON *.* TO 'kristen'@'localhost';
ERROR 1290 (HY000): The MariaDB server is running with the --skip-grant-tables option so it cannot execute this statement

Hors ligne

#8 Le 11/05/2019, à 09:18

bruno

Re : pas de connection automatique

D'abord tu n'a pas créé l'utilisateur kristen en utilisant la commande donnée en #4 puisqu'il utilise l'authentification unix_socket et non par mot de passe.
Ensuite tu ne pourra pas attribuer les droits que tu veux (GRANT) à ton utilisateur tant que mysql est lancé avec une option qui empêche cela (--skip-grant-table).

Il faut d'abord comprendre pourquoi tu n'arrive pas à te connecter normalement au serveur. Donc tu redémarres ta machine et tu vérifies l'état du service mysql :

sudo systemctl status mysql

Hors ligne

#9 Le 11/05/2019, à 14:33

Kristen44

Re : pas de connection automatique

ça donne ça :

● mariadb.service - MariaDB 10.1.38 database serve
   Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: r: enabled)
   Active:failed (Result: timeout) since Sat 2019-05-11 14:14:36 CEST; 2min 59s ago
     Docs: man:mysqld(8)
           https://mariadb.com/kb/en/library/systemd/
  Process: 912 ExecStart=/usr/sbin/mysqld $MYSQLD_OPTS $_WSREP_NEW_CLUSTER $_WSREP_START_POSITION (code=exited, status=0/SUCCESS)
$_EP_START_POSITION (code=exited, status=0/SUCCESS)
  Process: 789 ExecStartPre=/bin/sh -c [ ! -e /usr/bin/galera_recovery ] && VAR= ||   VAR=`/usr/bin/galera_recovery`; [ $? -eq 0 ]   && systemctl set-environment _WSREP_START_POSITION=$VAR || exit 1 (code=exited, status=0/SUCCESS)
 Process: 780 ExecStartPre=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS)
  Process: 772 ExecStartPre=/usr/bin/install -m 755 -o mysql -g root -d /var/run/mysqld (code=exited, status=0/SUCCESS)
 Main PID: 912 (code=exited, status=0/SUCCESS)

mai 11 14:13:02 arthur systemd[1]: Starting MariaDB 10.1.38 database server...
mai 11 14:13:05 arthur mysqld[912]: 2019-05-11 14:13:05 140422469131392 [Note] /usr/sbin/mysqld (mysqld 10.1.38-MariaDB-0ubuntu0.18.04.1) starting as process 912...
mai 11 14:14:33 arthur systemd[1]: mariadb.service: Start operation timed out. Terminating.
mai 11 14:14:36 arthur systemd[1]: mariadb.service: Failed with result 'timeout'.
mai 11 14:14:36 arthur systemd[1]: Failed to start MariaDB 10.1.38 database server.

Hors ligne

#10 Le 12/05/2019, à 08:37

bruno

Re : pas de connection automatique

C'est bien ce que je pensais le service ne démarre pas.
Il faut tenter un redémarrage du service :

sudo systemctl restart mysql

et immédiatement après donner le retour de :

journalctl -xe

La fait que le démarrage de mariadb fasse référence à cette variable : $_WSREP_NEW_CLUSTER laiisse penser à une erreur de configuration. As-tu touché aux fichiers de configuration sous /etc/mysql ?

Hors ligne

#11 Le 12/05/2019, à 15:33

Kristen44

Re : pas de connection automatique

Non, je n'ai rien touché aux fichiers de config.
Pour le reste, je te te fais confiance les yeux fermés, ne comprenant rien aux commandes que je tape wink

après

sudo systemctl restart mysql

il ne se passe rien pendant un bon bout de temps puis :

Job for mariadb.service failed because a timeout was exceeded.
See "systemctl status mariadb.service" and "journalctl -xe" for details.

AVANT que ce message n'arrive j'ai tapé journalctl -xe dans une autre console et voici la fin des messages affichés :

mai 12 15:20:49 arthur systemd[1]: Starting MariaDB 10.1.38 database server...
-- Subject: L'unité (unit) mariadb.service a commencé à démarrer
-- Defined-By: systemd
-- Support: http://www.ubuntu.com/support
-- 
-- L'unité (unit) mariadb.service a commencé à démarrer.
mai 12 15:20:49 arthur mysqld[2681]: 2019-05-12 15:20:49 139850729200768 [Note] /usr/sbin/mysqld (mysqld 10.1.38-MariaDB-0ubuntu0.18.04.1) starting as process 2681 ...
mai 12 15:20:50 arthur audit[2681]: AVC apparmor="DENIED" operation="sendmsg" info="Failed name lookup - disconnected path" error=-13 profile="/usr/sbin/mysqld" name="run/systemd/notify" pid=2681 comm="mysqld" requested_mask="w" denied_mask="w" fsuid=122 ouid=0
mai 12 15:20:50 arthur kernel: audit: type=1400 audit(1557667250.205:33): apparmor="DENIED" operation="sendmsg" info="Failed name lookup - disconnected path" error=-13 profile="/usr/sbin/mysqld" name="run/systemd/notify" pid=2681 comm="mysqld" requested_mask="w" denied_mask="w" fsuid=122 ouid=0

et systemctl status mariadb.service :

● mariadb.service - MariaDB 10.1.38 database server
   Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled)
   Active: failed (Result: timeout) since Sun 2019-05-12 15:22:21 CEST; 14min ago
     Docs: man:mysqld(8)
           https://mariadb.com/kb/en/library/systemd/
  Process: 2681 ExecStart=/usr/sbin/mysqld $MYSQLD_OPTS $_WSREP_NEW_CLUSTER $_WSREP_START_POSITION (code=exited, status=0/SUCCESS)
  Process: 2606 ExecStartPre=/bin/sh -c [ ! -e /usr/bin/galera_recovery ] && VAR= ||   VAR=`/usr/bin/galera_recovery`; [ $? -eq 0 ]   && systemctl set-environment _WSREP_START_POSITION=$VAR || exit 1 (code=exited, status=0/SUCCESS)
  Process: 2604 ExecStartPre=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS)
  Process: 2603 ExecStartPre=/usr/bin/install -m 755 -o mysql -g root -d /var/run/mysqld (code=exited, status=0/SUCCESS)
 Main PID: 2681 (code=exited, status=0/SUCCESS)

mai 12 15:20:49 arthur systemd[1]: Starting MariaDB 10.1.38 database server...
mai 12 15:20:49 arthur mysqld[2681]: 2019-05-12 15:20:49 139850729200768 [Note] /usr/sbin/mysqld (mysqld 10.1.38-MariaDB-0ubuntu0.18.04.1) starting as process 2681 ...
mai 12 15:22:19 arthur systemd[1]: mariadb.service: Start operation timed out. Terminating.
mai 12 15:22:21 arthur systemd[1]: mariadb.service: Failed with result 'timeout'.
mai 12 15:22:21 arthur systemd[1]: Failed to start MariaDB 10.1.38 database server.

Dernière modification par Kristen44 (Le 12/05/2019, à 15:38)

Hors ligne

#12 Le 12/05/2019, à 15:58

bruno

Re : pas de connection automatique

Apparemment c'est apparmor qui te bloque :

mai 12 15:20:50 arthur audit[2681]: AVC apparmor="DENIED"

Normalement le profil apparmor pour mariadb devrait être vite. S'il ne l'est pas c'est dû à une migration mysql → mariadb ratée.

Le plus simple est de désactiver ce profil :

sudo aa-disable /usr/sbin/mysqld

puis de redémarrer la machine.

Hors ligne

#13 Le 12/05/2019, à 20:17

Kristen44

Re : pas de connection automatique

:~$ sudo aa-disable /usr/sbin/mysqld
[sudo] Mot de passe de kristen :         
*sudo: aa-disable : commande introuvable

Hors ligne

#14 Le 12/05/2019, à 21:00

bruno

Re : pas de connection automatique

Au temps pour moi. Dans ce cas :

ln -s /etc/apparmor.d/usr.sbin.mysqld /etc/apparmor.d/disable/

et redémarrer.

Hors ligne

#15 Le 12/05/2019, à 21:43

Kristen44

Re : pas de connection automatique

Ahhh, on progresse !

kristen@arthur:~$ mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 52
Server version: 10.1.38-MariaDB-0ubuntu0.18.04.1 Ubuntu 18.04

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>  SELECT user, host, plugin, password FROM mysql.user;
ERROR 1142 (42000): SELECT command denied to user 'kristen'@'localhost' for table 'user'
MariaDB [(none)]> quit
Bye
kristen@arthur:~$ sudo mysql
[sudo] Mot de passe de kristen :         
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 53
Server version: 10.1.38-MariaDB-0ubuntu0.18.04.1 Ubuntu 18.04

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>  SELECT user, host, plugin, password FROM mysql.user;
+------------+-----------+-------------+-------------------------------------------+
| user       | host      | plugin      | password                                  |
+------------+-----------+-------------+-------------------------------------------+
| root       | localhost | unix_socket | *9901E3B125A65082741167868EB4534F6F6021E5 |
| phpmyadmin | localhost |             | *C978FF0F48EFC7DC8CDB8DECFDA4275792D43943 |
| kristen    | localhost | unix_socket | *9901E3B125A65082741167868EB4534F6F6021E5 |
+------------+-----------+-------------+-------------------------------------------+
3 rows in set (0.00 sec)

Je peux me connecter normalement à mariadb. Par contre, mon programme d'essai m'indique toujours connection failed et je n'arrive pas à me connecter à phpmyadmin ni en tant que root ni en tant que kristen ?!?

Hors ligne

#16 Le 12/05/2019, à 22:52

bruno

Re : pas de connection automatique

Normal, c'est à cause de l'authentification par unix_socket. Voir le message #4
Il faut créer un nouvel utilisateur ou  modifier ton utilisateur kristen pour qu'il puisse s’authentifier par mot de passe :

ALTER USER 'kristen'@'localhost' IDENTIFIED WITH mysql_native_password BY 'mot_de_passe_solide';

La doc: https://doc.ubuntu-fr.org/mysql

Dernière modification par bruno (Le 12/05/2019, à 22:53)

Hors ligne

#17 Le 13/05/2019, à 09:43

Kristen44

Re : pas de connection automatique

On tient le bon bout mais c'est pas encore tout à fait ça...
ALTER USER me renvoyant un message d'erreur de syntaxe, j'ai supprimé l'utilisateur kristen@localhost.

Mais lorsque je veux le recréer :

MariaDB [(none)]> CREATE USER 'kristen'@'localhost' IDENTIFIED WITH mysql_native_password BY 'monmotdepasse';
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'BY 'monmotdepasse'' at line 1

J'ai essayé sans le point-virgule final, je n'ai pas de message d'erreur mais ceci :

MariaDB [(none)]> CREATE USER 'kristen'@'localhost' IDENTIFIED WITH mysql_native_password BY 'titounet22'
    -> 

... d'où je ne sais pas sortir sinon par un ctrl-C... et l'utilisateur n'est pas créé.

Hors ligne

#18 Le 13/05/2019, à 10:53

bruno

Re : pas de connection automatique

Une instruction SQL doit toujours se terminer par un point-virgule (l'ajouter et entrée si nécessaire).
J'ai bêtement copié les instructions de la doc mysql mais effectivement ce n'est pas correct (au moins avec mariadb).

Cela doit fonctionner avec cette syntaxe (supprime l'utilisateur avant si nécessaire) :

CREATE USER 'kristen'@'localhost' IDENTIFIED BY 'titounet22';

Pour que ton utilisateur ait tous les droits sur toutes les bases :

GRANT ALL PRIVILEGES ON *.* TO 'kristen'@'localhost' WITH GRANT OPTION;

Puis :

FLUSH PRIVILEGES;

Hors ligne

#19 Le 13/05/2019, à 11:17

Kristen44

Re : pas de connection automatique

Yes ! Un grand merci à Bruno ! Juste pour mourir un peu moins idiot, peux-tu expliquer en quoi la formule magique :

ln -s /etc/apparmor.d/usr.sbin.mysqld /etc/apparmor.d/disable/

a résolu le problème ?

Hors ligne

#20 Le 13/05/2019, à 11:32

bruno

Re : pas de connection automatique

Ce n'est pas une formule magique wink Cela créé un lien symbolique /etc/apparmor.d/disable/usr.sbin.mysqld pointant sur /etc/apparmor.d/usr.sbin.mysqld

C'est une méthode pour désactiver un profil apparmor. Lorsqu'une application est lancée le démon apparmor vérifie les autorisations accordés dans son profil s'il existe sous /etc/apparmor.d. Si un lien symbolique existe sous /etc/apparmor.d/disable/, ce profil est ignoré (désactivé).

Hors ligne

#21 Le 13/05/2019, à 11:47

Kristen44

Re : pas de connection automatique

OK, j'y vois plus clair. Merci encore.

Hors ligne