web-dev-qa-db-fra.com

Impossible de démarrer le service MySql

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
9
user3933528

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

2
Ashish Prakash

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

0
reihaneh

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:

  1. Arrêter le service mysql,
  2. Sauvegarder et copier la base de données existante vers le nouvel emplacement
  3. Ajout de règles AppArmor.
  4. Redémarrage du service.

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 

0
mr_mo