Je viens de mettre à jour MariaDB en utilisant apt-get dist-upgrade. Maintenant, il ne commencera plus à utiliser le service mysql start .
Je peux cependant l'exécuter en tant que root ou faire: Sudo -u mysql mysqld_safe puis MariaDB démarre correctement. Le dossier/home/mysql appartient à l'utilisateur et au groupe mysql.
J'ai trouvé l'erreur à lancer dans cette fonction: https://github.com/MariaDB/server/blob/7ff44b1a832b005264994cbdfc52f93f69b92cdc/sql/mysqld.cc#L9865
Je ne sais pas quoi faire ensuite. Des pointeurs?
Pour exécuter MariaDB SQL depuis/home, dans le fichier /usr/lib/systemd/system/mariadb.service, changez simplement:
ProtectHome=true
à :
ProtectHome=false
Sur debian 9, vous devez remplacer ProtectHome par false dans les deux /lib/systemd/system/mariadb.service
et/lib/systemd/system/[email protected]
puis exécutez Sudo systemctl daemon-reload.
Peut-être aussi exécuter Sudo grep -Ri "protecthome" /lib/systemd/system
pour trouver d'autres instances de ProtectHome dans des fichiers liés à mysql si cela ne fonctionne toujours pas
Même situation après la mise à jour sur Debian 8 (Jessie) et 9 (Stretch). Après "apt-get upgrade" la commande
le serveur ne démarre pas et enregistre l'erreur:
[Avertissement] Impossible de créer le fichier de test /home/johndoe/UserDatabases/mypcname.lower-test
la solution est de changer dans le fichier / lib/systemd/system/mariadb.service la valeur:
ProtectHome=true
à
ProtectHome=false
comme décrit ci-dessus.
La réponse de Thomas est correcte, mais est réinitialisée par des mises à jour tous les quelques mois. Voici donc une solution permanente:
Utilisation systemctl edit mariadb
pour créer un fichier écrasant les paramètres par défaut du service mariadb. (Dans Debian, il est situé dans /etc/systemd/system/mariadb.service.d/override.conf
)
Définissez le même paramètre que Thomas a modifié dans le fichier:
[Service]
ProtectHome=false
Utilisation systemctl daemon-reload
pour recharger la configuration systemctl.
@RedGiant oui, je l'ai résolu. J'ai oublié de poster ici.
Apparemment, après la version .1, vous ne pouvez plus exécuter SQL depuis/home. Il y a probablement un moyen de contourner cela, mais je ne l'ai pas trouvé.
Je peux exécuter MySQL à partir de n'importe quel endroit sauf/home. Ce que j'ai fait était de démonter/home (j'avais mon RAID SSD monté sur/home) et de remonter mon disque en tant que/ssd. J'ai changé mes chemins dans la config et cela a fonctionné tout de suite.
Je n'ai pas exécuté SELinux ou Apparmor.
La solution de contournement pour cela consiste à monter le répertoire dans home sous/var/lib/mysql:
mount --bind /home/mysql/var/lib/mysql /var/lib/mysql