8823 sujets

Développement web côté serveur, CMS

Pages :
Bonjour la liste,

Le titre est pas terrible mais je ne pouvais pas reprendre celui du post précédent... Donc après une réinstallation difficile, mysql est là et fonctionne :

$ systemctl status mysql
? mysql.service - MySQL Community Server
     Loaded: loaded (/usr/lib/systemd/system/mysql.service; enabled; preset: en>
     Active: active (running) since Wed 2026-04-08 07:34:19 CEST; 3h 43min ago
   Main PID: 1707 (mysqld)
     Status: "Server is operational"
      Tasks: 37 (limit: 8758)
     Memory: 421.1M (peak: 434.7M)
        CPU: 2min 14.776s
     CGroup: /system.slice/mysql.service
             ??1707 /usr/sbin/mysqld

avril 08 07:32:39 Arzhur systemd[1]: Starting mysql.service - MySQL Community S>
avril 08 07:34:19 Arzhur systemd[1]: Started mysql.service - MySQL Community Se>
lines 1-13/13 (END)


j'ai bien mes utilisateurs :

mysql> SELECT user FROM mysql.user;
+------------------+
| user             |
+------------------+
| debian-sys-maint |
| geriadur         |
| mysql.infoschema |
| mysql.session    |
| mysql.sys        |
| root             |
+------------------+
6 rows in set (0,00 sec)


mais lorsque je veux lancer phpmyadmin j'ai toujours de message :
 mysqli::real_connect(): (HY000/1698): Access denied for user 'root'@'localhost'


et le code php de Niuxe me renvoie :
Cette page ne fonctionne pas
Impossible de traiter cette demande via localhost à l'heure actuelle.
HTTP ERROR 500


enfin un essai de restaurer la base est aussi refusé :
~/Nextcloud2/geriaoueg$ mysql -u root -p geriaoueg < geriaoueg-20260405.sql.gz
Enter password: 
ERROR 1698 (28000): Access denied for user 'root'@'localhost'



Merci de votre aide !
Bonjour !

J'ai - bêtement - arrêté le serveur mysql et je n'arrive même plus à m'y reconnecter....
J'ai essayé ça :

$ mysqld_safe --skip-grant-tables
2026-04-09T08:08:32.282540Z mysqld_safe Logging to '/var/log/mysql/error.log'.
/usr/bin/mysqld_safe: 144: cannot create /var/log/mysql/error.log: Permission denied
2026-04-09T08:08:32.288167Z mysqld_safe Directory '/var/run/mysqld' for UNIX socket file don't exists.
/usr/bin/mysqld_safe: 144: cannot create /var/log/mysql/error.log: Permission denied


et j'ai ça:
$ sudo ls /var/log/mysql -lah
total 24K
drwxr-x---  2 mysql adm    4,0K avril  9 06:20 .
drwxr-xr-x 24 root  syslog 4,0K avril  9 06:20 ..
-rw-r-----  1 mysql adm    1,3K avril  9 09:54 error.log
-rw-r-----  1 mysql adm     553 avril  8 21:26 error.log.1.gz
-rw-r-----  1 mysql adm     649 avril  7 22:46 error.log.2.gz
-rw-r-----  1 mysql adm    1,1K avril  6 22:12 error.log.3.gz

peut-être une histoire de permissions mais ça me dépasse...
Modifié par Titen (09 Apr 2026 - 12:21)
Modérateur
Salut,

Désolé, j'étais occupé ces derniers jours.

Que fait cette commande ?
sudo systemctl status mysql


Quand tu te connectes à mysql par le terminal, tu fais bien cette commande ?
mysql -u root -p

ou celle ci ?
mysql -h localhost -u root -p


Auparavant, as tu essayé de te connecter via ce fichier de test avec les bons droits ?

<?php
try {
    $pdo = new PDO('mysql:host=localhost;dbname=ta_base', 'utilisateur', 'mot_de_passe');
    echo "Connexion réussie !";
} catch (PDOException $e) {
    echo "Erreur : " . $e->getMessage();
}
?>


Titen a écrit :

et j'ai ça:
$ sudo ls /var/log/mysql -lah
total 24K
drwxr-x---  2 mysql adm    4,0K avril  9 06:20 .
drwxr-xr-x 24 root  syslog 4,0K avril  9 06:20 ..
-rw-r-----  1 mysql adm    1,3K avril  9 09:54 error.log
-rw-r-----  1 mysql adm     553 avril  8 21:26 error.log.1.gz
-rw-r-----  1 mysql adm     649 avril  7 22:46 error.log.2.gz
-rw-r-----  1 mysql adm    1,1K avril  6 22:12 error.log.3.gz

peut-être une histoire de permissions mais ça me dépasse...


As tu fait ? Quel est le résultat de cette commande ?

sudo tail -n 50 /var/log/mysql/error.log

Modifié par Niuxe (11 Apr 2026 - 12:11)
Salut,

Je me disais aussi : c'est rudement calme...
Alors, dans l'ordre :
$ sudo systemctl status mysql
? mysql.service - MySQL Community Server
     Loaded: loaded (/usr/lib/systemd/system/mysql.service; enabled; preset: en>
     Active: active (running) since Sat 2026-04-11 08:39:50 CEST; 6h ago
    Process: 1476 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=e>
   Main PID: 2105 (mysqld)
     Status: "Server is operational"
      Tasks: 37 (limit: 8758)
     Memory: 385.1M (peak: 434.9M)
        CPU: 3min 21.227s
     CGroup: /system.slice/mysql.service
             ??2105 /usr/sbin/mysqld

avril 11 08:38:43 Arzhur systemd[1]: Starting mysql.service - MySQL Community Server...
avril 11 08:39:50 Arzhur systemd[1]: Started mysql.service - MySQL Community Server.


Après les deux méthodes de connexion proposées échouent :
$ mysql -u root -p
Enter password: 
ERROR 1698 (28000): Access denied for user 'root'@'localhost'
kristen@Arzhur:~$ mysql -h localhost -u root -p
Enter password: 
ERROR 1698 (28000): Access denied for user 'root'@'localhost'


Le script que tu proposes donne ça sous Firefox :
Il semble y avoir un problème sur ce site. 
localhost sent back an error.
Code d’erreur : 500 Internal Server Error


et pareil avec Chrome :
C
ette page ne fonctionne pas
Impossible de traiter cette demande via localhost à l'heure actuelle.
HTTP ERROR 500


et last but not least :
$ sudo tail -n 50 /var/log/mysql/error.log
2026-04-11T06:39:20.549134Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.45-0ubuntu0.24.04.1) starting as process 2105
2026-04-11T06:39:21.679379Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2026-04-11T06:39:41.392493Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2026-04-11T06:39:49.253707Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed.
2026-04-11T06:39:49.253800Z 0 [System] [MY-013602] [Server] Channel mysql_main configured to support TLS. Encrypted connections are now supported for this channel.
2026-04-11T06:39:50.143045Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Bind-address: '127.0.0.1' port: 33060, socket: /var/run/mysqld/mysqlx.sock
2026-04-11T06:39:50.143209Z 0 [System] [MY-010931] [Server] /usr/sbin/mysqld: ready for connections. Version: '8.0.45-0ubuntu0.24.04.1'  socket: '/var/run/mysqld/mysqld.sock'  port: 3306  (Ubuntu).


Je suis largué...
Modérateur
Il semble que ton souci vient d'un mauvais password pour root.

Si tu fais cette commande, accèdes tu à mysql via le terminal ?

sudo mysql -u root
oui, comme ça, c'est bon :
$ sudo mysql -u root
Mot de passe de kristen :         
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 10
Server version: 8.0.45-0ubuntu0.24.04.1 (Ubuntu)

Copyright (c) 2000, 2026, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
Modérateur
Donc,
- MariaDB fonctionne puisque tu utilises Linux Mint de mémoire (Tu confirmes que tu es sur Linux Mint et que tu as MariaDB)
- tu peux te connecter à la base en admin

Tu te connectes à MariaDB en admin :

sudo mariadb -u root


Tu changes le mot de passe root¹ :

-- MariaDB 
ALTER USER 'root'@'localhost' IDENTIFIED VIA mysql_native_password USING PASSWORD('ton_nouveau_mdp');


Tu valides les changements :

FLUSH PRIVILEGES;
EXIT;


Tu redémarres le service (pour être sûr)

sudo systemctl restart mariadb


Si, ça ne fonctionne pas :

tail -n 50 /var/log/mysql/error.log


Dans un fichier php, tu écris ceci et tu testes :

<?php
echo "ok";
?>


Si ton fichier php fonctionne, tu fais les changements et tu testes :

<?php
try {
    $pdo = new PDO('mysql:host=localhost;dbname=ta_base', 'utilisateur', 'mot_de_passe');
    echo "Connexion réussie !";
} catch (PDOException $e) {
    echo "Erreur : " . $e->getMessage();
}
?>


En attendant de règler ton souci avec phpmyadmin, je te recommande d'utiliser dbeaver community edtion²
____
¹ Entre MySQL et MariaDB, il y a des changements de commandes. Une des raisons pourquoi j'ai migré sur PostgreSQL.
² Je l'utilise depuis des années. En plus, c'est une autre manière de te connecter à MariaDB ou une autre base de données (MySQL, SQLite, PostrgeSQL, etc.).
Modifié par Niuxe (12 Apr 2026 - 01:09)
Salut Niuxe, alors : non je n'ai pas mariadb mais mysql (je devrais peut-être en profiter pour changer ! ). On dirait qu'il refuse que je mette un mot de passe pour root :
sudo mysql -u root
 ...gnangnagna...

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'quelquechose';
Query OK, 0 rows affected (0,03 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0,04 sec)

mysql> SELECT Host, User, authentication_string FROM mysql.user;
+-----------+------------------+------------------------------------------------------------------------+
| Host      | User             | authentication_string                                                  |
+-----------+------------------+------------------------------------------------------------------------+
| localhost | debian-sys-maint | $A$005$QB
                                          Q
                                           _L`{ i:R	geqjaSgedfhZ5oajXa6zlksfdkj0qs5z1ANMcaC8m95 |
| localhost | geriadur         | $A$005$:2T_>troTdgt(ao2qXTzf6R7WBKaltchkwkJaTCKGCD.StRc6rpbnwQ7 |
| localhost | mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | mysql.session    | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | mysql.sys        | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | root             |                                                                        |
+-----------+------------------+------------------------------------------------------------------------+
6 rows in set (0,00 sec)

mysql>


le peit script :
<?php
echo "ok";
?>

fonctionne mais celui-ci :
<?php
try {
    $pdo = new PDO('mysql:host=localhost;dbname=ta_base', 'utilisateur', 'mot_de_passe');
    echo "Connexion réussie !";
} catch (PDOException $e) {
    echo "Erreur : " . $e->getMessage();
}
?>

renvoie connexion réussie avec l'utilisateur "geriadur" et son mot de passe mais refuse root :
Erreur : SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES)


Du coup je me connecte à phpmyadmin avec l'utilisateur 'geriadur', crée une table vide 'geriaoueg' et essaie de rapatrier les données qui avaient été sauvegardées ainsi :
mysqldump -u root -p geriaoueg| gzip > Nextcloud2/geriaoueg/geriaoueg-$(date +%Y%m%d).sql.gz

et boum :
mysql> source geriaoueg.sql.gz
ERROR: 
ASCII '\0' appeared in the statement, but this is not allowed unless option --binary-mode is enabled and mysql is run in non-interactive mode. Set --binary-mode to 1 if ASCII '\0' is expected. Query: ''.
Bye


D'où la question : où peut-on acheter une corde le dimanche ?
Modifié par Titen (12 Apr 2026 - 08:34)
Bon j'ai dézippé avec cette commande :
gunzip < geriaoueg.sql.gz | mysql -u root -p

et je rééssaie :
mysql> source geriaoueg.sql
Query OK, 0 rows affected (0,00 sec)
Query OK, 0 rows affected (0,00 sec)
Query OK, 0 rows affected (0,00 sec)
Query OK, 0 rows affected (0,00 sec)
Query OK, 0 rows affected (0,00 sec)
Query OK, 0 rows affected (0,01 sec)

en veux-tu en voilà avec aussi des :

ERROR 1046 (3D000): No database selected
Query OK, 0 rows affected (0,00 sec)

ERROR 1046 (3D000): No database selected
ERROR 1046 (3D000): No database selected
ERROR 1046 (3D000): No database selected
ERROR 1046 (3D000): No database selected
ERROR 1046 (3D000): No database selected

et la table 'geriaoueg' reste désespérément vide...
Modérateur
Salut,

2 zones d'ombres. On va en écarter une :
que donne la commande ?

sudo systemctl status mariadb


Tu es sur Linux Mint et normalement, c'est mariadb. Comment as tu installé ? Si je ne dis pas de bêtise, tu as fait :

sudo apt install mysql-server


Sur Debian et les Debian like, c'est mariadb. Lorsque tu fais appel à la cmd mysql, c'est un alias de mariadb. d'où cette ambiguïté.

Tu as bien fait de faire :

SELECT Host, User, authentication_string FROM mysql.user;


On observe 2 user :
- geriadur
- root

l'utilisateur geriadur a un mot de passe et root, rien du tout

Tu as fait cette expression SQL qui est juste syntaxiquement¹ mais n'a pas affecté le changement (Query OK, 0 rows affected) :

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'quelquechose';
Query OK, 0 rows affected (0,03 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0,04 sec)


Or, si tu fais ceci (ce dont je t'ai parlé précédemment), ça devrait fonctionner :

ALTER USER 'root'@'localhost' IDENTIFIED VIA mysql_native_password USING PASSWORD('ton_nouveau_mdp');
FLUSH PRIVILEGES;


On va tester ça en attendant :
1. peux-tu te connecter à la database avec geriadur ?

mysql -u geriadur -p


2. Si tu peux te connecter, alors créer une base bidon :

CREATE DATABASE bidon;


3. retente avec le fichier php, mais avec geriadur :

<?php
try {
    $pdo = new PDO('mysql:host=localhost;dbname=bidon', 'geriadur', 'mot_de_passe');
    echo "Connexion réussie !";
} catch (PDOException $e) {
    echo "Erreur : " . $e->getMessage();
}
?>


Que ce soit ton souci de phpmyadmin et ton import de ton dump, chaque chose en son temps.
____
¹ Le soleil est bleu Smiley biggol
Modifié par Niuxe (12 Apr 2026 - 12:54)
C'est mysql pas mariadb ; et plus ça va, moins j'y comprends quelque chose... :

$ mysql -u geriadur -p
Enter password: 

...gnagna...

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

mysql> CREATE DATABASE bidon;
ERROR 1044 (42000): Access denied for user 'geriadur'@'localhost' to database 'bidon'
mysql>

Modifié par Titen (12 Apr 2026 - 13:15)
Modérateur
Bien que le prompt donne mysql, je suis quasi sûr que tu utilises maraidb.

Que donne la commande ?
sudo systemctl status mariadb


ou
mariadb --version

Modifié par Niuxe (12 Apr 2026 - 14:34)
Perdu !

$ sudo systemctl status mariadb
[sudo] Mot de passe de kristen :         
Unit mariadb.service could not be found.

$ sudo systemctl status mysql
? mysql.service - MySQL Community Server
     Loaded: loaded (/usr/lib/systemd/system/mysql.service; enabled; preset: en>
     Active: active (running) since Sun 2026-04-12 07:55:23 CEST; 6h ago
    Process: 6644 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=e>
   Main PID: 6655 (mysqld)
     Status: "Server is operational"
      Tasks: 40 (limit: 8758)
     Memory: 131.1M (peak: 446.1M swap: 289.4M swap peak: 289.4M)
        CPU: 3min 27.769s
     CGroup: /system.slice/mysql.service
             ??6655 /usr/sbin/mysqld

avril 12 07:55:16 Arzhur systemd[1]: Starting mysql.service - MySQL Community S>
avril 12 07:55:23 Arzhur systemd[1]: Started mysql.service - MySQL Community Se>

Modifié par Titen (12 Apr 2026 - 14:33)
Modérateur
Donc tu as mariadb et non mysql ! Tu es victime du drama¹ Oracle !

Bref, que donne cette commande ?

ALTER USER 'root'@'localhost' IDENTIFIED VIA mysql_native_password USING PASSWORD('ton_nouveau_mdp');
FLUSH PRIVILEGES;


En 2015, les instructions MySQL et MariaDB étaient identiques. Puisque MariaDB est un fork de MySQL, les 2 databases divergent maintenant.

___
¹ OpenOffice (développement moribond) VS Libreoffice et MySQL VS MariaDB.
Modifié par Niuxe (12 Apr 2026 - 14:47)
Attends comment déduis- tu que j'ai mariadb quand j'ai : "Unit mariadb.service could not be found" alors que "sudo systemctl status mysql" répond positivement ????

d'ailleurs :
mysql> ALTER USER 'root'@'localhost' IDENTIFIED VIA mysql_native_password USING PASSWORD('machinchose');
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'VIA mysql_native_password USING PASSWORD('machinchose')' at line 1

Modifié par Titen (12 Apr 2026 - 14:50)
Modérateur
Attend, j'ai lu trop vite. Je me suis emballé. Oups Smiley confused Mais normalement sur Mint, c'est MariaDB.

Tu as installé le dépôt Oracle ? Attends, je vérifie quelque chose.
Modérateur
Peux tu me confirmer que la commande ci dessous indique mysql 8 ?

mysql --version


Donc, pour faire le changement de mot de passe du user « root »¹ :

ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';

Pour valider les changements :

FLUSH PRIVILEGES;


Ensuite, on va donner tous les privilèges à root ²³

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


Verifier que root à un mot de passe :

SELECT Host, User, authentication_string FROM mysql.user;

___
¹ https://dev.mysql.com/doc/refman/8.4/en/resetting-permissions.html
² dans un contexte de prod, ce n'est pas une chose à faire
³ https://dev.mysql.com/doc/refman/8.4/en/grant.html
On en revient toujours au même point : le système refuse de mettre un mot de passe à root ! :
$ mysql --version
mysql  Ver 8.0.45-0ubuntu0.24.04.1 for Linux on x86_64 ((Ubuntu))
kristen@Arzhur:~$ sudo mysql -u root
gangangna

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'titounette';
Query OK, 0 rows affected (1,04 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0,36 sec)

mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;
Query OK, 0 rows affected (0,03 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0,05 sec)
mysql> SELECT Host, User, authentication_string FROM mysql.user;
+-----------+------------------+------------------------------------------------------------------------+
| Host      | User             | authentication_string                                                  |
+-----------+------------------+------------------------------------------------------------------------+
| localhost | debian-sys-maint | $A$005$QB
                                          Q
                                           _L`{ i:R	geqjaSgedfhZ5oajXa6zlksfdkj0qs5z1ANMcaC8m95 |
| localhost | geriadur         | $A$005$:2T_>troTdgt(ao2qXTzf6R7WBKaltchkwkJaTCKGCD.StRc6rpbnwQ7 |
| localhost | mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | mysql.session    | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | mysql.sys        | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | root             |                                                                        |
+-----------+------------------+------------------------------------------------------------------------+
6 rows in set (0,05 sec)
Modérateur
Essaie ceci (force le password) :

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'titounette';
FLUSH PRIVILEGES;
SELECT Host, User, authentication_string FROM mysql.user;
Meilleure solution