Mysql error (13)

Hier, mon collègue a eu de la casse sur sa VM Linux (virtualbox). Grub ne trouve pas la partition de boot ... Il existe plusieurs solutions plus ou moins périlleuses suivant l'expérience que l'on a de Linux. La plus simple est de tenter la ré-install depuis l'ISO. Ça prend tout au plus 15 minutes. On avait juste presque oublié qu'il faudrait reconfigurer/ré-installer la plupart des services (nginx, mysql). Comme on avait été un peu malin, on avait recopié les configurations Nginx. Pour la plupart des services, ça se passe bien. Ça c'est un poil corsé avec Mysql. Une erreur un peu inattendu après une redémarrage, alors qu'avant le mysql fonctionnait très bien.

 Dans le navigateur on avait une ligne :

Can't connect to local MySQL server through socket '/var/mysql/mysqld.sock' (2)

Dans la log (/var/log/mysql/error.log

140420 22:42:56 [Warning] Using unique option prefix myisam-recover instead of myisam-recover-options is deprecated and will be removed in a future release. Please use the full name instead.
140420 22:42:56 [Note] Plugin 'FEDERATED' is disabled.
/usr/sbin/mysqld: Can't find file: './mysql/plugin.frm' (errno: 13)

 -----

150422  9:30:54 [ERROR] /usr/sbin/mysqld: Can't find file: './lcp_country_fr/drupal_cache_bootstrap.frm' (errno: 13)
150422  9:30:54 [ERROR] /usr/sbin/mysqld: Can't find file: './lcp_country_fr/drupal_semaphore.frm' (errno: 13)
150422  9:30:54 [ERROR] /usr/sbin/mysqld: Can't find file: './lcp_country_fr/drupal_semaphore.frm' (errno: 13)

Avec ce genre d'indice on peut chercher un moment, alors que la solution est simple. On commence donc à fouiller l'internet mondial et on fini par avoir un indice. Cet indice c'est apparmor.
Pour mémoire apparmor c'est un peu le monsieur sécurité dans Ubuntu pour les applications. Tout de suite je fais la relation. J'avais déjà écrit quelques lignes à son sujet ici

Comme nous avons beaucoup de bases de données assez lourdes qu'il vaut mieux ne pas perdre, nous les plaçons sur la partition /home . De base, l'application Mysql n'a pas accès à se répertoire. Il faut donc l'autorisé via Apparmor en modifiant le fichier de configuration qui concerne mysql.

Le fichier ce trouve ici (pour 13.10) /etc/apparmor.d/usr.sbin.mysqld

Commentez les lignes (le # indique un commentaire)

#  /var/lib/mysql/ r,
#  /var/lib/mysql/** rwk,

Ajoutez les lignes

  /home/mysql/ r,
  /home/mysql/** rwk,

Redémarrez ou rechargez Apparmor

sudo service apparmor reload

Normalement tout est rétabli, sinon il va falloir encore chercher sur l'internet mondial.

Comments powered by CComment

We use cookies

Nous utilisons des cookies sur notre site web. Certains d’entre eux sont essentiels au fonctionnement du site et d’autres nous aident à améliorer ce site et l’expérience utilisateur (cookies traceurs). Vous pouvez décider vous-même si vous autorisez ou non ces cookies. Merci de noter que, si vous les rejetez, vous risquez de ne pas pouvoir utiliser l’ensemble des fonctionnalités du site.