Erreurs de rotation log mysql

bonjour,

je fais un tour régulier d’exploration des logs du debian et il me revient toutes les nuits depuis longtemps un message d’erreur, certes non bloquant, mais qui me laisse interrogateur du fait que cette machine ne fait tourner que jeedom et qu’il a été installé via la procédure install.sh avec succès en V4 directement, puis upgradé petit à petit vers la dernière version.

le rep en question, depuis 2021 il ne se passe plus rien ici à priori…

root@jeedom:/var/log/mysql# ls -l
total 4
-rw-r----- 1 mysql adm    0 nov.  12 00:00 error.log
-rw-r----- 1 mysql adm    0 nov.  11 00:00 error.log.1
-rw-r----- 1 mysql adm 1291 avril  5  2021 error.log.8.gz
root@jeedom:/var/log/mysql# 

extrait de /var/log/daemon.log

Nov 12 00:00:01 jeedom systemd[1]: Starting Daily man-db regeneration...
Nov 12 00:00:01 jeedom systemd[1]: Starting Rotate log files...
Nov 12 00:00:01 jeedom logrotate[15968]: #007mysqladmin: connect to server at 'localhost' failed
Nov 12 00:00:01 jeedom logrotate[15968]: error: 'Access denied for user 'root'@'localhost' (using password: NO)'
Nov 12 00:00:01 jeedom logrotate[15968]: error: error running shared postrotate script for '/var/log/mysql/mysql.log /var/log/mysql/mysql-slow.log /var/log/mysql/mariadb-slow.log /var/log/mysql/error.log '
Nov 12 00:00:02 jeedom systemd[1]: logrotate.service: Main process exited, code=exited, status=1/FAILURE
Nov 12 00:00:02 jeedom systemd[1]: logrotate.service: Failed with result 'exit-code'.
Nov 12 00:00:02 jeedom systemd[1]: Failed to start Rotate log files.
Nov 12 00:00:07 jeedom systemd[1]: man-db.service: Succeeded.
1 « J'aime »

Hello,

La même chez moi :

Nov 12 00:00:00 jeedom logrotate[31520]: #007mysqladmin: connect to server at 'localhost' failed
Nov 12 00:00:00 jeedom logrotate[31520]: error: 'Access denied for user 'root'@'localhost' (using password: NO)'
Nov 12 00:00:00 jeedom logrotate[31520]: error: error running shared postrotate script for '/var/log/mysql/mysql.log /var/log/mysql/mysql-slow.log /var/log/mysql/mariadb-slow.log /var/log/mysql/error.log '

Nov 12 00:00:00 jeedom systemd[1]: logrotate.service: Main process exited, code=exited, status=1/FAILURE
Nov 12 00:00:00 jeedom systemd[1]: logrotate.service: Failed with result 'exit-code'.
Nov 12 00:00:00 jeedom systemd[1]: Failed to start Rotate log files.

Pourtant tout se passe bien, vu que l’espace au milieu des 6 lignes ci-dessus marque la séparation entre 2 fichiers de log :wink:

Ce billet (traitant d’un problème de rotation de log MySQL) semble adapté :

A la lecture de ce billet, j’ai rajouté une ligne copytruncate après la ligne compress dans mon fichier /etc/logrotate.d/mysql-server. Il n’y a rien de plus à faire pour prendre en compte ce changement, logrotate étant lancé en cron par linux.
Je verrais demain si ça a rotate sans erreur.

Bad

je vais tester d’ajouter ce flag, malgré que je m’interroge sur le fait qu’il tente de lancer mysqladmin et échoue. Chez moi pour le moment il n’y a aucune génération de fichier log il sont tous à 0.

En même temps il n’y a pas de log généré à part les erreurs et comme manifestement il n’y en a pas … ben pas de fichier.

1 « J'aime »

Hello.
Mêmes interrogations de ma part.
L’authentification se fait sans mot de passe, à ma connaissance un mot de passe mysql est défini à l’installation de jeedom.

Pour corriger l’erreur:

Editer le fichier debian.cnf pour renseigner le mot de passe root de mysql (mariadb) sur la ligne « password = » Attention il ne s’agit pas du mot de passe root du système Linux mais bien celui de la base de donnnée.

sudo nano /etc/mysql/debian.cnf
[client]
host     = localhost
user     = root
password = motdepasse
socket   = /var/run/mysqld/mysqld.sock
[mysql_upgrade]
host     = localhost
user     = root
password = motdepasse
socket   = /var/run/mysqld/mysqld.sock
basedir  = /usr

Pour vérifier que l’erreur est résolue:

sudo logrotate -v -f /etc/logrotate.d/mysql-server

Si vous n’avez pas le mot de passe root de mysql, il est possible de le modifier en suivant les instructions suivantes:

sudo /etc/init.d/mysql stop
sudo mysqld_safe --skip-grant-tables &
sudo mysql --user root

Remplacer motdepasse par votre nouveau mot de passe que vous renseignerez également dans le fichier debian.cnf

flush privileges;
alter user 'root'@'localhost' identified by 'motdepasse';
quit
sudo kill `cat /var/run/mysqld/mysqld.pid`
sudo /etc/init.d/mysql start

Vous poouvez tester votre nouveau mot de passe en vous connectant à mysql

sudo mysql --user root --password

Ce sujet a été automatiquement fermé après 43 heures. Aucune réponse n’est permise dorénavant.