expertenaustausch > comp.* > comp.datenbanken.mysql

Burkhard Schultheis (02.03.2020, 12:26)
Plattform: Mariadb 10.2.31 auf SLES 12 SP4.
Problem: Seit dem Update auf 10.2.31 hat das Verzeichnis mysql nur noch
Rechte für den Eigentümer, also 700. Und damit funktioniert unser
Nagios-Check für die Replication nicht mehr. Wenn ich die Rechte auf 755
ändere, geht der Check wieder. Ansonsten kommt die Fehlermeldung
"Connect failed: Can't connect to local MySQL server through socket
'/var/lib/mysql/mysql.sock' (13 "Permission denied")". /var/lib/mysql
ist ein Link auf /data/mysql und da fehlen eben die Rechte für die
Gruppe mysql. Der Check läuft lokal auf dem Datenbankserver. Ich habe
schon probiert, die Abfrage über TCP/IP zu machen, indem ich als Host
$(hostname --fqdn) angegeben hab. Hilft leider auch nicht.

Die Datenbank läuft auf zwei Servern, die vollkommen gleich sein
sollten, aber zumindest in einem Detail nun unterschiedlich sind: Wenn
ich die Rechte an /data/mysql auf 750 ändere, bleiben sie auf dem einen
zumindest bis zum Reboot erhalten, auf dem anderen werden immer wieder
die Rechte auf 750 zurückgesetzt.

Meine Fragen an euch:

1. Weiß jemand, warum die Rechte an mysql eingeschränkt wurden?
2. Was kann auf dem zweiten Server dazu führen, dass die Rechte immer
wieder auf 700 gesetzt werden?
3. Wie kann ich das Zurücksetzen der Rechte beim Booten verhindern?

Vielen Dank im Voraus für alle Antworten!

Grüße
Burkhard
Axel Schwenke (02.03.2020, 13:11)
On 02.03.2020 11:26, Burkhard Schultheis wrote:
> Plattform: Mariadb 10.2.31 auf SLES 12 SP4.
> Problem: Seit dem Update auf 10.2.31 hat das Verzeichnis mysql nur noch
> Rechte für den Eigentümer, also 700.


Das ist kein Problem, sondern Absicht. Niemand außer dem 'mysql' user
(vulgo: dem 'mysqld' Prozeß) soll Zugriff auf das Datadir haben.

> Und damit funktioniert unser
> Nagios-Check für die Replication nicht mehr. Wenn ich die Rechte auf 755
> ändere, geht der Check wieder. Ansonsten kommt die Fehlermeldung "Connect
> failed: Can't connect to local MySQL server through socket
> '/var/lib/mysql/mysql.sock' (13 "Permission denied")". /var/lib/mysql ist
> ein Link auf /data/mysql


Das ist das Problem. Der UNIX Socket darf _nicht_ im Datadir liegen.

Normalerweise *ist* /var/lib/mysql das Datadir und der Socket liegt in
/var/run/mysql (oder /tmp). Keine Ahnung, ob das bei SLES generell
verbosselt ist, oder wer das kaputt gemacht hat.

> Die Datenbank läuft auf zwei Servern, die vollkommen gleich sein sollten,
> aber zumindest in einem Detail nun unterschiedlich sind: Wenn ich die Rechte
> an /data/mysql auf 750 ändere, bleiben sie auf dem einen zumindestbis zum
> Reboot erhalten, auf dem anderen werden immer wieder die Rechte auf 750
> zurückgesetzt.


> Meine Fragen an euch:
> 1. Weiß jemand, warum die Rechte an mysql eingeschränkt wurden?


Security.

> 2. Was kann auf dem zweiten Server dazu führen, dass die Rechte immer wieder
> auf 700 gesetzt werden?


Das Init-System. Bei dir vermutlich systemd.

> 3. Wie kann ich das Zurücksetzen der Rechte beim Booten verhindern?


Mach es nicht. Ändere die my.cnf, daß der Socket nicht mehr im Datadir liegt.
Burkhard Schultheis (02.03.2020, 13:34)
Am 02.03.2020 um 12:11 schrieb Axel Schwenke:
> Mach es nicht. Ändere die my.cnf, daß der Socket nicht mehr im Datadir liegt.


Werde ich gleich mit meinem Teamleiter besprechen! Danke!

Grüße
Burkhard
Ähnliche Themen