Quand je lance la commande
mysql -u root -p
J'ai une erreur
ERREUR 2002 (HY000): Impossible de se connecter au serveur MySQL local via le socket '/var/run/mysqld/mysqld.sock' (2)
Quand j'essaye de faire fonctionner le service mysql
service mysql start
il est expiré avec un message
La tâche pour mysql.service a échoué car un délai a été dépassé. Voir "systemctl status mysql.service" et "journalctl -xe" pour plus de détails.
Les journaux
Jan 08 23:44:48 monal-Lenovo-IdeaPad-Z510 audit[30814]: AVC apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/sys/devices/system/node/" pid=30814 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=123 ouid=0 Jan 08 23:44:48 monal-Lenovo-IdeaPad-Z510 audit[30814]: AVC apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/proc/30814/status" pid=30814 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=123 ouid=123 Jan 08 23:44:48 monal-Lenovo-IdeaPad-Z510 audit[30814]: AVC apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/usr/my.cnf" pid=30814 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=123 ouid=0 Jan 08 23:44:48 monal-Lenovo-IdeaPad-Z510 kernel: audit: type=1400 audit(1483899288.523:210): apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/proc/30814/status" pid=30814 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=123 ouid=123 Jan 08 23:44:48 monal-Lenovo-IdeaPad-Z510 kernel: audit: type=1400 audit(1483899288.523:211): apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/sys/devices/system/node/" pid=30814 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=123 ouid=0 Jan 08 23:44:48 monal-Lenovo-IdeaPad-Z510 kernel: audit: type=1400 audit(1483899288.523:212): apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/proc/30814/status" pid=30814 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=123 ouid=123 Jan 08 23:44:48 monal-Lenovo-IdeaPad-Z510 kernel: audit: type=1400 audit(1483899288.523:213): apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/usr/my.cnf" pid=30814 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=123 ouid=0 Jan 08 23:44:48 monal-Lenovo-IdeaPad-Z510 mysqld_safe[30539]: 170108 23:44:48 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended Jan 08 23:45:01 monal-Lenovo-IdeaPad-Z510 CRON[30867]: pam_unix(cron:session): session opened for user root by (uid=0) Jan 08 23:45:01 monal-Lenovo-IdeaPad-Z510 CRON[30868]: (root) CMD (command -v debian-sa1 > /dev/null && debian-sa1 1 1) Jan 08 23:45:01 monal-Lenovo-IdeaPad-Z510 CRON[30867]: pam_unix(cron:session): session closed for user root
Commencez par arrêter l'instance mysql. Vous devrez copier le répertoire exact/var/lib/mysql dans votre nouveau répertoire de données, en conservant son autorisation. Donc utilisez rsync avec l'option -a
Sudo rsync -av /var/lib/mysql /db/data/
Changez également le chemin du répertoire de données dans le fichier mysql.cnf
Vous devrez ajouter un alias à apparmor pour que mysql puisse écrire dans le nouveau répertoire.
Pour ajouter un alias:
Sudo nano /etc/apparmor.d/tunables/alias
puis ajoutez cette ligne en bas
alias /var/lib/mysql/ -> /db/data/mysql
Redémarrer l'apparmor
Sudo systemctl restart apparmor
et maintenant démarrez mysql. Ça devrait marcher
Si votre mysql fonctionne et que vous voulez changer votre répertoire, procédez comme suit: Changez datadir depuis vim /etc/mysql/mysql.conf.d/mysqld.cnf
Changez le propriétaire ou définissez des privilèges élevés pour le nouveau répertoire chown mysql.mysql /yourdir/mysql
Vous devriez changer vim /etc/apparmor.d/tunables/alias
alias /var/lib/mysql/ -> /yourdb/mysql
ajoutez enfin /db/data/mysql r
et /db/data/mysql** rwk
à la fin de vim /etc/apparmor.d/usr.sbin.mysqld
/etc/init.d/apparmor reload
/etc/init.d/mysql start
Mais si votre mysql ne fonctionne plus, supprimez-le et suivez le déroulement de ces étapes. Si vous avez besoin de vos données, copiez-les dans un nouveau répertoire. Supprimez les étapes suivantes: apt-get autoremove mysql-server
apt-get remove --purge mysql-\*
apt-get install mysql-server
J'ajoute cette réponse aux autres personnes qui n'ont pas trouvé de réponse satisfaisante.
Tout d’abord, suivez un simple tutorial pour copier et définir des alias et des configurations dans le nouveau répertoire de données souhaité (datadir
).
Le tutoriel montre comment:
Ensuite, j'ai eu ce problème exact (accès AppArmor refusé) lorsque j'ai déplacé ma datdir
vers /media/data/mysql/
, et la dernière étape (redémarrage du service mysql) a échoué en raison de AVC apparmor="DENIED" operation="open" prof.....
.
Tout d'abord, comme l'a mentionné @reihaneh, ajoutez des règles de lecture et d'écriture AppArmor: Ajoutez /db/data/mysql r,
et /db/data/mysql** rwk,
(ne supprimez pas les virgules) à la fin de vim /etc/apparmor.d/usr.sbin.mysqld
Enfin, la seule chose à faire (non mentionné dans les tutoriels) est de changer les privilèges du nouveau datadir sur l'utilisateur MySQL-Server et le groupe mysql .
J'ai utilisé nautile pour le faire:
Lancez nautilus en tant que SU (Sudo nautilus) -> cliquez avec le bouton droit sur le nouveau datadir -> Propriétés -> Autorisations
Puis choisissez le propriétaire: MySQL - MySQL Server
Et groupe: mysql