6 votes

Erreur de rotation des journaux MySQL

Je suis nouveau sous Linux et j'ai configuré un VPS sous Ubuntu 16.04 avec postfix, dovecot et rouncube en utilisant mariadb pour la base de données. Tout semble fonctionner correctement mais je reçois régulièrement l'e-mail suivant :

/etc/cron.daily/logrotate:
mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'root'@'localhost' (using password: NO)'
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 '
run-parts: /etc/cron.daily/logrotate exited with return code 1

J'ai fait quelques recherches et trouvé un message suggérant que je dois créer un fichier /root/.my.cnf ce que j'ai fait et depuis j'ai redémarré le serveur etc. mais je continue de recevoir l'erreur. Le contenu de mon /root/.my.cnf est le suivant :

[mysqladmin]
password = *mypassword*
user = root

[mysql]
password = *mypassword*

Est-ce que quelqu'un sait s'il y a quelque chose que je manque ou si je dois configurer quelque chose d'autre pour que cela utilise éventuellement le mot de passe mysql ?

Merci

6voto

Ilya Biryukov Points 153

Cela pourrait être un bug dans la configuration 'stock' lors de l'utilisation de mariadb au lieu de mysql qui n'a pas encore été éradiqué, car je me souviens vaguement avoir rencontré quelque chose de similaire moi-même en passant de mysql à mariadb.

Vous voudrez regarder dans /etc/logrotate.d/mysql-server pour voir ce qui s'exécute au postrotate. Vous aurez probablement quelque chose comme ceci:

test -x /usr/bin/mysqladmin || exit 0
if [ -f `my_print_defaults --mysqld | grep -oP "pid-file=\K[^$]+"` ]; then
    # Si cela échoue, vérifiez debian.conf!
    mysqladmin --defaults-file=/etc/mysql/debian.cnf flush-logs
fi

Ubuntu regarde probablement là, alors essayez de jeter un œil dans /etc/mysql/debian.cnf et voyez ce qui est configuré.

2voto

mcmacerson Points 213

AvatarKava nous remet sur la bonne voie et sa réponse fonctionnera pour la plupart des gens. Si vous êtes toujours perplexe après avoir ajouté un utilisateur et un mot de passe dans le fichier /etc/mysql/debian.cnf (même s'il est dit de ne pas toucher à ce fichier haha!), alors :

assurez-vous d'avoir des guillemets autour de votre mot de passe

surtout s'il y a des caractères spéciaux dans votre mot de passe.

Une autre astuce est de supprimer l'option --defaults-file=/etc/mysql/debian.cnf de la commande mysqladmin dans le fichier /etc/logrotate.d/mysql-server. Si vous supprimez cette option, l'utilisateur root (l'utilisateur qui exécute logrotate) aura toujours besoin d'un utilisateur et d'un mot de passe valides pour se connecter à mysql donc assurez-vous d'avoir un fichier .my.cnf approprié dans /root. Dans les deux cas, les modifications apportées à debian.cnf ou mysql-server pourraient être écrasées lors de la prochaine mise à jour de MariaDB mais comme le souligne AvatarKava, vous serez probablement invité avant que la mise à jour n'écrase ces fichiers. Dans le pire des cas, vous commencerez à recevoir à nouveau des erreurs de logrotate après la mise à jour et devrez refaire les mêmes modifications.

0voto

Meloman Points 241

Dans mon cas, recréer l'utilisateur debian-sys-maint était la solution.

Voici comment faire :

  1. Utilisez l'onglet SQL de votre phpmyadmin ou, sur votre console linux, connectez-vous à mysql avec :

    mysql -u root -p

entrez votre mot de passe root et continuez

  1. exécutez la commande suivante :

    GRANT RELOAD, SHUTDOWN, PROCESS, SHOW DATABASES, SUPER, LOCK TABLES ON *.* TO 'debian-sys-maint'@'localhost' IDENTIFIED BY 'votre-mot-de-passe'

vous pouvez trouver 'votre-mot-de-passe' dans /etc/mysql/debian.cnf

# Généré automatiquement pour les scripts Debian. NE PAS TOUCHER!
[client]
host     = localhost
user     = debian-sys-maint
password = votre-mot-de-passe
socket   = /var/run/mysqld/mysqld.sock
[mysql_upgrade]
host     = localhost
user     = debian-sys-maint
password = votre-mot-de-passe
socket   = /var/run/mysqld/mysqld.sock

Si vous avez le message suivant :

ERREUR 1819 (HY000) : Votre mot de passe ne satisfait pas les exigences actuelles de la politique

vous devrez changer votre mot de passe ou vous pouvez exécuter les commandes suivantes pour désactiver temporairement la politique des mots de passe :

  1. désinstaller le plugin validate_password;

  2. GRANT RELOAD, SHUTDOWN, PROCESS, SHOW DATABASES, SUPER, LOCK TABLES ON *.* TO 'debian-sys-maint'@'localhost' IDENTIFIED BY 'votre-mot-de-passe'

  3. INSTALLER LE PLUGIN validate_password SONAME 'validate_password.so';

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X