Autorisation refusée d'écrire dans le journal mysql

8

Je teste juste une nouvelle installation d'Ubuntu (Vivid 15.04) sur Vagrant, et je rencontre des problèmes avec mysql et la connexion à un emplacement personnalisé.

En /var/log/syslogje reçois

/usr/bin/mysqld_safe: cannot create /var/log/mysqld.log: Permission denied

Si ls -l /varje reçois

drwxrwxr-x 10 root syslog 4096 Jun  8 19:52 log

Si je regarde dans / var / log le fichier n'existe pas

Je pensais que j'avais temporairement désactivé l'apparmeur juste pour isoler s'il s'agissait de cela ou de quelque chose d'autre causant le problème, mais je ne sais pas si cela crée toujours un problème autorisations).

Si j'essaie de créer manuellement le fichier en tant que mysql, je suis également refusé (je lui ai autorisé l'accès au test, je le supprimerai après).

touch /var/log/mysql.log
touch: cannot touch ‘/var/log/mysql.log’: Permission denied

Si je regarde un autre serveur en cours d'exécution (centos), il dispose des autorisations comme ci-dessus (et écrit en tant qu'utilisateur mysql), donc je me demande comment mysql obtient normalement les autorisations pour accéder au répertoire / var / log, et comment puis-je l'obtenir accéder à ce dossier via un fonctionnement normal?

Voici mon profil d'apparmeur pour mysql


/usr/sbin/mysqld {
  #include 
  #include 
  #include 
  #include 
  #include 

  capability dac_override,
  capability sys_resource,
  capability setgid,
  capability setuid,

  network tcp,

  /etc/hosts.allow r,
  /etc/hosts.deny r,

  /etc/mysql/** r,
  /usr/lib/mysql/plugin/ r,
  /usr/lib/mysql/plugin/*.so* mr,
  /usr/sbin/mysqld mr,
  /usr/share/mysql/** r,
  /var/log/mysqld.log rw,
  /var/log/mysqld.err rw,
  /var/lib/mysql/ r,
  /var/lib/mysql/** rwk,
  /var/log/mysql/ r,
  /var/log/mysql/* rw,
  /var/run/mysqld/mysqld.pid rw,
  /var/run/mysqld/mysqld.sock w,
  /run/mysqld/mysqld.pid rw,
  /run/mysqld/mysqld.sock w,

  /sys/devices/system/cpu/ r,

/var/log/mysqld.log rw,

  # Site-specific additions and overrides. See local/README for details.
  #include 
}

J'ai également ajouté le fichier ci-dessus à l'apparmor.d / disable directoru

Remarque: J'ai ajouté cette ligne /var/log/mysqld.log rw, elle n'était pas là à l'origine et a le même problème (après avoir fait un rechargement de l'apparmeur).


apparmor module is loaded.
5 profiles are loaded.
5 profiles are in enforce mode.
   /sbin/dhclient
   /usr/lib/NetworkManager/nm-dhcp-client.action
   /usr/lib/NetworkManager/nm-dhcp-helper
   /usr/lib/connman/scripts/dhclient-script
   /usr/sbin/tcpdump
0 profiles are in complain mode.
1 processes have profiles defined.
1 processes are in enforce mode.
   /sbin/dhclient (565) 
0 processes are in complain mode.
0 processes are unconfined but have a profile defined.

Jun  8 20:33:33 vagrant-ubuntu-vivid-64 systemd[1]: Starting MySQL Community Server...
Jun  8 20:33:33 vagrant-ubuntu-vivid-64 mysqld_safe[11231]: 150608 20:33:33 mysqld_safe Logging to '/var/log/mysqld.log'.
Jun  8 20:33:33 vagrant-ubuntu-vivid-64 mysqld_safe[11231]: touch: cannot touch ‘/var/log/mysqld.log’: Permission denied
Jun  8 20:33:33 vagrant-ubuntu-vivid-64 mysqld_safe[11231]: chmod: cannot access ‘/var/log/mysqld.log’: No such file or directory
Jun  8 20:33:33 vagrant-ubuntu-vivid-64 mysqld_safe[11231]: 150608 20:33:33 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
Jun  8 20:33:33 vagrant-ubuntu-vivid-64 mysqld_safe[11231]: /usr/bin/mysqld_safe: 126: /usr/bin/mysqld_safe: cannot create /var/log/mysqld.log: Permission denied
Ian
la source

Réponses:

12

Il me semble que la plupart des gens créent un répertoire nommé à l' mysqlintérieur de /var/log, changez le propriétaire de ce dossier en utilisateur mysql.

sudo mkdir /var/log/mysql
sudo chown mysql:mysql /var/log/mysql   

Ça devrait le faire. Veillez à mettre à jour l'emplacement de journalisation du serveur et à le redémarrer. Après avoir testé, réactivez le profil d'apparmeur de mysql.

Seth
la source