web-dev-qa-db-fra.com

Mysql ne démarre plus

Je voulais vérifier à nouveau mon serveur de journalisation, mais tout à coup, je reçois ce message lorsque je visite l'URL:

Je cours sur Ubuntu Xenial

FATAL: Impossible de se connecter au serveur MySQL sur 'localhost'. Assurez-vous d'avoir spécifié un nom de base de données MySQL valide dans 'include/config.php'

quand je fais journalctl -xe j'obtiens le message suivant:

-- Unit mysql.service has begun starting up.
Jun 15 19:26:12 arjanlog audit[3665]: AVC apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/proc/3665/status" pid=3665 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=112 ouid=112

Jun 15 19:26:12 arjanlog audit[3665]: AVC apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/sys/devices/system/node/" pid=3665 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=112 ouid=0

Jun 15 19:26:12 arjanlog audit[3665]: AVC apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/proc/3665/status" pid=3665 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=112 ouid=112
Jun 15 19:26:12 arjanlog kernel: audit: type=1400 audit(1497547572.504:69): apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" 
name="/proc/3665/status" pid=3665 comm="mysqld" requested_mask="r" denied_m

Jun 15 19:26:12 arjanlog kernel: audit: type=1400 audit(1497547572.504:70): apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/sys/devices/system/node/" pid=3665 comm="mysqld" requested_mask="r"

Jun 15 19:26:12 arjanlog kernel: audit: type=1400 audit(1497547572.504:71): apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/proc/3665/status" pid=3665 comm="mysqld" requested_mask="r" denied_m

Jun 15 19:26:12 arjanlog systemd[1]: mysql.service: Main process exited, code=exited, status=1/FAILURE
4
Arjan

J'ai eu ce problème aussi et je l'ai résolu en corrigeant le fichier de configuration apparmor à /etc/apparmor.d/usr.sbin.mysqld. J'ai ajouté ces lignes:

  /proc/*/status r,
  /sys/devices/system/node/ r,
  /sys/devices/system/node/node0/meminfo r,

Votre sortie journalctl -xe affiche les fichiers que MySQL a besoin de l'autorisation d'utiliser. Vous pouvez également regarder dans /var/log/syslog:

Jun 15 19:26:12 arjanlog audit[3665]: AVC apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/proc/3665/status" pid=3665 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=112 ouid=112
Jun 15 19:26:12 arjanlog audit[3665]: AVC apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/sys/devices/system/node/" pid=3665 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=112 ouid=0
Jun 15 19:26:12 arjanlog audit[3665]: AVC apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/proc/3665/status" pid=3665 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=112 ouid=112

Cela signifie que /usr/sbin/mysqld était DENIED en essayant d'ouvrir /proc/3665/status et /sys/devices/system/node/ en lecture (r).

Notez que dans le fichier de configuration apparmor, la barre oblique de fin dans /sys/devices/system/node/ est nécessaire, alors ne la laissez pas de côté!

8
Paul A Jungwirth

Il n'est peut-être pas nécessaire d'arrêter complètement Apparmor. Il devrait suffire de force brute pour désactiver apparmor pour mysqld, si vous ne voulez pas identifier le problème principal:

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

2
i3i5i7

J'ai lu dans un autre commentaire de thread SO que le message apparmor="DENIED" n'est probablement pas la raison pour laquelle MySQL (ou dans mon cas MariaDB) n'a pas démarré, car il ne s'agit que d'un avertissement.

Dans mon cas, la mise à jour et la mise à niveau des paquetages installés par apt et le redémarrage du système ont résolu le problème.

Sudo apt-get dist-upgrade
Sudo apt-get update
Sudo apt-get upgrade
Sudo reboot

Ensuite, vous devrez attendre quelques minutes pendant que le système redémarre, puis reconnectez-vous et redémarrez le (s) service (s) avec service, systemctl et je pense éventuellement /etc/system.d.

Ensuite, MariaDB s'est dégagée joyeusement.

Il y a un bon article sur les différentes commandes apt upgradeici , et je pense que ce que update fait, c'est mettre à jour les listes de sources.

J'avais également trouvé cette commande utile lorsqu'il n'y avait pas de fichier journal dans /var/log/mysql:

tail -f /var/log/syslog | grep mysql
1
MikeiLL

Pour moi, l’erreur était que la base de données mysql avait été corrompue. Je pouvais le voir quand je suis allé dans les logs /var/log/mysql/error.log et que ça montrait une erreur:

InnoDB: Database was not shutdown normally!

Il y avait des solutions que quelqu'un pourrait utiliser comme problème de corruption de table

Mais cela n'a pas fonctionné pour moi car je ne pouvais pas démarrer un serveur en mode WRITE afin de résoudre le problème.

J'ai réussi à résoudre le problème en créant une copie du répertoire /var/lib/mysql. J'ai copié le fichier dans mysql.old, puis supprimé le répertoire mysql.

Puis j'ai appelé une commande en terminal:

Sudo mysqld --initialize --initialize-insecure

Pour générer un nouveau répertoire mysql

J'ai ensuite modifié les autorisations du nouveau répertoire en modifiant l'utilisateur et le groupe du répertoire mysql en utilisateur: mysql et groupe: mysql. Utilisez la commande chown:

Sudo chown -R mysql:mysql /var/lib/mysql

Puis j'ai appelé la commande:

Sudo mysql -u root

et changé le mot de passe avec:

SET PASSWORD FOR root@'localhost' = PASSWORD('newpassword');

Et puis redémarré le serveur mysql:

Sudo service mysql restart

Et tout a fonctionné.


Certaines des commandes que j'ai utilisées en cours de route étaient (bien que je ne sois pas sûr de leur contribution à la résolution du problème):

Sudo apt-get --reinstall install mysql-server-5.7
1
Aleks

J'ai eu ce bogue lorsque j'ai essayé de déplacer le fichier mysql de/var/lib/mysql vers un autre emplacement.

ajouter config à /etc/apparmor.d/usr.sbin.mysqld n'a pas fonctionné pour moi

alors j'ai eu ce bug pour ubuntu

Ça disait: 

Sudo nano /etc/apparmor.d/usr.sbin.mysqld
line 25 after:
# Allow config access
  /etc/mysql/** r,
-add line:
  /etc/mysql/* r,

et cela fonctionne pour moi: 

ajouter /etc/mysql/* r, à /etc/apparmor.d/usr.sbin.mysqld

exécuter systemctl restart apparmor.service

et service mysql start

0
yey