Berechtigung verweigert Schreiben in MySQL-Protokoll


8

Ich teste gerade eine neue Ubuntu-Installation (Vivid 15.04) auf Vagrant und bekomme Probleme mit MySQL und der Protokollierung an einem benutzerdefinierten Speicherort.

In /var/log/syslogbekomme ich

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

Wenn ls -l /varich bekomme

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

Wenn ich in / var / log nachschaue, existiert die Datei nicht

Ich dachte, ich hätte Apparmor vorübergehend deaktiviert, um zu isolieren, ob es das oder etwas anderes ist, das das Problem verursacht, aber ich bin mir nicht sicher, ob es immer noch ein Problem verursacht (Bearbeiten: Ich denke, es ist möglicherweise noch aktiviert, also nicht sicher, ob dies ein Problem ist oder einfach Berechtigungen).

Wenn ich versuche, die Datei manuell als MySQL zu erstellen, wird mir dies ebenfalls verweigert (ich habe vorübergehend den Bash-Zugriff auf den Test zugelassen, den ich anschließend entfernen werde).

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

Wenn ich mir einen anderen laufenden Server (Centos) ansehe, verfügt er über die oben genannten Berechtigungen (und schreibt als MySQL-Benutzer). Daher frage ich mich, wie MySQL normalerweise Berechtigungen für den Zugriff auf das Verzeichnis / var / log erhält und wie ich darauf zugreifen kann Zugriff auf diesen Ordner über normale Ausführung?

Hier ist mein Apparmor-Profil für 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 
}

Ich habe auch die obige Datei zur Datei apparmor.d / disable Director hinzugefügt

Hinweis: Ich habe diese Zeile hinzugefügt /var/log/mysqld.log rw, sie war ursprünglich nicht vorhanden und hat das gleiche Problem (nach einem Apparmor-Reload).


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

Antworten:


12

Es scheint mir, dass die meisten Leute ein Verzeichnis mit dem Namen mysqlinnerhalb von erstellen /var/logund den Besitzer dieses Ordners in den MySQL-Benutzer ändern.

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

Das sollte es tun. Stellen Sie sicher, dass Sie den Protokollierungsspeicherort des Servers aktualisieren und neu starten. Nachdem Sie getestet haben, aktivieren Sie das Apparmor-Profil von mysql erneut.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.