Moin zusammen,
zuerst: Ich war mir nicht sicher, ob das hier nach "Sicherheit" oder "Serverdienste" gehört. Da aber mein Hauptproblem mit AppArmor besteht, vermute ich, dass ich hier besser aufgehoben bin.
Ich teste und überarbeite gerade den MySQL-Wiki-Artikel und scheitere dabei am Abschnitt "Datenpfad". Dort wird beschrieben, wie man MySQL so einrichtet, dass die Datenbanken an einem anderen Ort liegen, als normal. Eigentlich kann ich das auch, aber AppArmor scheint mir hier dazwischenzufunken. Denn trotz der im Artikel beschriebenen Anpassungen startet der MySQL-Dienst nicht mehr.
Folgendes habe ich gemacht:
1
systemctl stop mysql.service
Anpassen des MySQL-Konfigurations-Parameters
datadir
in der Datei/etc/mysql/mysql.conf.d/mysqld.cnf
von/var/lib/mysql
nach/var/lib/mysql_new
1 2
cd /var/lib mv mysql mysql_new
Ergänzen der Datei
/etc/apparmor.d/local/usr.sbin.mysqld
um folgende Zeilen:/var/lib/mysql_new/ r, /var/lib/mysql_new/** rwk,
1
systemctl restart apparmor.service
1
systemctl start mysql.service
Dabei wird mir ein Fehlschlagen des Starts gemeldet. Folgende Einträge finde ich dabei jeweils in den Logdateien / im Journal:
/var/log/mysql/error.log
[…] 2019-01-07T12:19:47.586004Z 0 [Note] /usr/sbin/mysqld: Shutdown complete 2019-01-07T12:23:57.023113Z 0 [Warning] Changed limits: max_open_files: 1024 (requested 5000) 2019-01-07T12:23:57.023164Z 0 [Warning] Changed limits: table_open_cache: 431 (requested 2000) 2019-01-07T12:23:57.183503Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details). 2019-01-07T12:23:57.184700Z 0 [Note] /usr/sbin/mysqld (mysqld 5.7.24-0ubuntu0.16.04.1) starting as process 1247 ... 2019-01-07T12:23:57.188608Z 0 [Note] InnoDB: PUNCH HOLE support available 2019-01-07T12:23:57.188644Z 0 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins 2019-01-07T12:23:57.188651Z 0 [Note] InnoDB: Uses event mutexes 2019-01-07T12:23:57.188657Z 0 [Note] InnoDB: GCC builtin __atomic_thread_fence() is used for memory barrier 2019-01-07T12:23:57.188662Z 0 [Note] InnoDB: Compressed tables use zlib 1.2.8 2019-01-07T12:23:57.188668Z 0 [Note] InnoDB: Using Linux native AIO 2019-01-07T12:23:57.188868Z 0 [Note] InnoDB: Number of pools: 1 2019-01-07T12:23:57.188969Z 0 [Note] InnoDB: Using CPU crc32 instructions 2019-01-07T12:23:57.190206Z 0 [Note] InnoDB: Initializing buffer pool, total size = 128M, instances = 1, chunk size = 128M 2019-01-07T12:23:57.196944Z 0 [Note] InnoDB: Completed initialization of buffer pool 2019-01-07T12:23:57.198578Z 0 [Note] InnoDB: If the mysqld execution user is authorized, page cleaner thread priority can be changed. See the man page of setpriority(). 2019-01-07T12:23:57.210746Z 0 [Note] InnoDB: Highest supported file format is Barracuda. 2019-01-07T12:23:57.210980Z 0 [ERROR] InnoDB: Operating system error number 13 in a file operation. 2019-01-07T12:23:57.211008Z 0 [ERROR] InnoDB: The error means mysqld does not have the access rights to the directory. 2019-01-07T12:23:57.211019Z 0 [ERROR] InnoDB: Plugin initialization aborted with error Generic error 2019-01-07T12:23:57.814654Z 0 [ERROR] Plugin 'InnoDB' init function returned error. 2019-01-07T12:23:57.814723Z 0 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed. 2019-01-07T12:23:57.814740Z 0 [ERROR] Failed to initialize builtin plugins. 2019-01-07T12:23:57.814752Z 0 [ERROR] Aborting 2019-01-07T12:23:57.814784Z 0 [Note] Binlog end 2019-01-07T12:23:57.814891Z 0 [Note] Shutting down plugin 'CSV' 2019-01-07T12:23:57.815435Z 0 [Note] /usr/sbin/mysqld: Shutdown complete
systemctl status mysql.service
root@xenial:~# systemctl status mysql.service ● mysql.service - MySQL Community Server Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled) Active: failed (Result: exit-code) since Mo 2019-01-07 13:24:27 CET; 28min ago Main PID: 1247 (code=exited, status=1/FAILURE) Jan 07 13:23:56 xenial systemd[1]: Starting MySQL Community Server... Jan 07 13:23:57 xenial systemd[1]: mysql.service: Main process exited, code=exited, status=1/FAILURE Jan 07 13:24:27 xenial systemd[1]: Failed to start MySQL Community Server. Jan 07 13:24:27 xenial systemd[1]: mysql.service: Unit entered failed state. Jan 07 13:24:27 xenial systemd[1]: mysql.service: Failed with result 'exit-code'.
journalctl -b0
[…] Jan 07 13:23:56 xenial systemd[1]: Starting MySQL Community Server... Jan 07 13:23:57 xenial audit[1247]: AVC apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/proc/1247/status" pid=1247 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=109 ouid=109 Jan 07 13:23:57 xenial audit[1247]: AVC apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/sys/devices/system/node/" pid=1247 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=109 ouid=0 Jan 07 13:23:57 xenial audit[1247]: AVC apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/proc/1247/status" pid=1247 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=109 ouid=109 Jan 07 13:23:57 xenial kernel: audit_printk_skb: 9 callbacks suppressed Jan 07 13:23:57 xenial kernel: audit: type=1400 audit(1546863837.014:31): apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/proc/1247/status" pid=1247 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=109 ouid=109 Jan 07 13:23:57 xenial kernel: audit: type=1400 audit(1546863837.014:32): apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/sys/devices/system/node/" pid=1247 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=109 ouid=0 Jan 07 13:23:57 xenial kernel: audit: type=1400 audit(1546863837.014:33): apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/proc/1247/status" pid=1247 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=109 ouid=109 Jan 07 13:23:57 xenial audit[1247]: AVC apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/var/lib/mysql_new/" pid=1247 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=109 ouid=109 Jan 07 13:23:57 xenial kernel: audit: type=1400 audit(1546863837.206:34): apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/var/lib/mysql_new/" pid=1247 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=109 ouid=109 Jan 07 13:23:57 xenial systemd[1]: mysql.service: Main process exited, code=exited, status=1/FAILURE Jan 07 13:24:27 xenial systemd[1]: Failed to start MySQL Community Server. Jan 07 13:24:27 xenial systemd[1]: mysql.service: Unit entered failed state. Jan 07 13:24:27 xenial systemd[1]: mysql.service: Failed with result 'exit-code'.
Ich denke, mein Problem ist hier die Rückmeldungen von AppArmor im Journal korrekt zu verstehen. Leider weiß ich nicht, was mir die einzelnen Zeilen sagen sollen… Kann mir da jemand auf die Sprünge helfen?
Danke im Voraus und Gruß
Torben