Page 1 sur 1

MySQL Permission denied sur Debian

Publié : 06 févr. 2019 19:07
par Malekal_morte
Cet article rapide vous propose des solutions sur les erreurs "Permission Denied" lors du lancement de MySQL.
Cela arrive lorsque vous cherchez à déplacer le datadir de Mysql dans un autre de celui que celui par défaut (/var/lib/mysql)
Par exemple vers /home pour une machine OVH qui possède souvent plus de place disque.

Lorsque vous tentez de relancer MySQL, vous obtenez l'erreur Errcode: 13 "Permission denied" :

Code : Tout sélectionner

Feb  6 09:53:01 stock mysqld[3681]: 2019-02-06  9:53:01 139945931448768 [Note] /usr/sbin/mysqld (mysqld 10.1.37-MariaDB-0+deb9u1) starting as process 3681 ...
Feb  6 09:53:01 stock mysqld[3681]: 2019-02-06  9:53:01 139945931448768 [Warning] Can't create test file /home/mysqlDatabases/ovh-7.lower-test
Feb  6 09:53:01 stock mysqld[3681]: [b]#007/usr/sbin/mysqld: Can't change dir to '/home/mysqlDatabases/' (Errcode: 13 "Permission denied")[/b]
/usr/sbin/mysqld: Can't change dir to '/home/mysqlDatabases/' (Errcode: 13 "Permission denied")
/usr/sbin/mysqld: Can't change dir to '/home/mysqlDatabases/' (Errcode: 13 "Permission denied")
Spécifique Debian

Sur Debian, il faut éditer le fichier suivant : /etc/systemd/system/mysqld.service
Ensuite cherchez la ligne :
# Prevent accessing /home, /root and /run/user
ProtectHome=true
Le fichier /etc/systemd/system/mysqld.service
Le fichier /etc/systemd/system/mysqld.service
Commentez la ligne ProcectHome puis systemctl daemon-reload
Enfin relancez MySQL.
relance le service MySQL
relance le service MySQL
mysql-permission-denied-3.png (3.77 Kio) Consulté 967 fois
Cas Apparmor

Certains distributions sont livrées avec Apparmor qui permet d'associer un profil de sécurité à chaque application.
(dans mon cas, la Debian avec le template OVH n'est pas livrée avec ce programme.)

Il faut donc donner les permissions sur le dossier que vous souhaitez utiliser en data_dir à MySQL
Pour se faire, éditez le fichier /etc/apparmor.d/usr.sbin.mysqld

Ajouter les répertoires MySQL avec les permissions de la sorte.
/newDirectory/mysql/ r,
/newDirectory/mysql/** rwk,
Recharchez la configuration AppArmor : service apparmor reload