mySQL logfiles in der Konsole

lupusoft

Aktives Mitglied
Thread Starter
Dabei seit
05.01.2004
Beiträge
250
Reaktionspunkte
4
Moin,
ich bin gerade dabei, eine mySQL Bank von 10.2.8 auf einen G5 mit 10.3.5 zu übertragen. Ein sehr nettes feature der Panther Konsole ist ja, dass man nun die verschiedenen (error)log Dateien "in einer Hand" hat. Als Unix-DAU würde es mir sehr entgegen kommen, wenn ich die diversen mySQL logs ebenfalls aus der Konsole heraus anschauen könnte. Leider funktioniert das nicht so, wie ich es mir erhofft habe. Hier mal eine kurze Beschreibung, was ich versucht habe:
1. mysql-max-4.0.21 installiert
2. eine my.cnf Datei in /etc angelegt u.a. mit folgenden Einträgen

log-update = /var/log/mysql/update.log
log-error = /var/log/mysql/error.log
log = /var/log/mysql/logfile.log

3. einen Ordner mysql in /var/log/ angelegt, der zunächst die gleichen Rechte wie der übergeordnete hatte, nämlich sowas wie drwxr-xr-x 2 root wheel.
4. den mysql Daemon gestartet und in der Konsole nachgeschaut. War natürlich nix zu sehen.
5. Im Terminal nachgeschaut, ob die logfiles da sind. Sind sie:

/var/log//mysql:
total 24
drwxr-xr-x 5 mysql wheel - 170B 19 Oct 12:10 ./
drwxr-xr-x 36 root wheel - 1K 19 Oct 11:54 ../
-rw-rw---- 1 mysql wheel - 2K 19 Oct 12:11 error.log
-rw-rw---- 1 mysql wheel - 444B 19 Oct 12:11 logfile.log
-rw-rw---- 1 mysql wheel - 296B 19 Oct 12:11 update.log


Was ich vermute, ist, dass mySQL nach dem Start den Owner und die Rechte auf mysql bzw. wheel gesetzt hat. Da liegt der Hund begraben, oder?
Fällt irgendwem was ein, wie ich die Konsole dazu bringen könnte, die mySQL logfiles zu lesen? Wie macht ihr das? Jedesmal mit sudo ins Terminal wie in diesem thread beschrieben https://www.macuser.de/forum/showthread.php?t=10606 ?

Danke für eure Vorschläge, Lupus
 
Vielleicht reicht es ja schon wenn du die drei Files unter deinem Account anlegst bevor du MySQL das erste mal startet.
Wenn sie nicht da sind muss MySQl sie natürlich erstellen, und das kann es nur mit seinem Systemaccount. Wenn die Files schon da sind müssen sie auch nicht erstellt werden.
 
Hi, danke für die Antwort.
tobias.beuth schrieb:
Vielleicht reicht es ja schon wenn du die drei Files unter deinem Account anlegst bevor du MySQL das erste mal startet.
Soll heissen, ich könnte sie theoretisch auch im Nachhinein umzwingen, oder? Werde gleich mal schauen, ob das geht. Ich befürchte allerdings, dass mySQL die Rechte dann wieder ändert (genau wie beim Ordner darüber). Ich blick diese ganze Rechtevergabe sowieso nicht.
 
Also hier der Versuch. Zunächst die Benutzerrechte neu eingestellt.

/var/log//mysql:
total 24
drwxrwxr-x 5 root wheel - 170B 19 Oct 12:10 ./
drwxr-xr-x 36 root wheel - 1K 19 Oct 11:54 ../
-rwxrwxr-x 1 root wheel - 2K 19 Oct 16:07 error.log
-rwxrwxr-x 1 root wheel - 773B 19 Oct 16:06 logfile.log
-rwxrwxr-x 1 root wheel - 296B 19 Oct 12:11 update.log

In die Konsole gegangen und nachgeschaut: die drei log Dateien erscheinen nun zunächst mal in der linken Spalte wenn ich den mysql Ordner öffne. Ein Klick auf error.log zeigt mir den Inhalt pepp
Danach den mysqld neu hochgefahren und wieder in die Konsole gewechselt mit dem (noch angezeigten) error log:

041019 16:14:30 mysqld started
041019 16:14:30 Warning: Setting lower_case_table_names=2 because file system for /xxx/xxx/data/ is case insensitive
/usr/local/mysql/bin/mysqld: File '/var/log/mysql/logfile.log' not found (Errcode: 13)
041019 16:14:30 Could not use /var/log/mysql/logfile.log for logging (error 13). Turning logging off for the whole duration of the MySQL server process. To turn it on again: fix the cause, shutdown the MySQL server and restart it.
/usr/local/mysql/bin/mysqld: File '/var/log/mysql/update.log' not found (Errcode: 13)
041019 16:14:30 Could not use /var/log/mysql/update.log for logging (error 13). Turning logging off for the whole duration of the MySQL server process. To turn it on again: fix the cause, shutdown the MySQL server and restart it.
041019 16:14:31 InnoDB: Started
/usr/local/mysql/bin/mysqld: ready for connections.
Version: '4.0.21-max-log' socket: '/tmp/mysql.sock' port: xxx Official MySQL-max binary

Mit anderen Worten, er mag es wohl nicht wenn die beiden anderen nicht von ihm stammen. :( Noch lustiger:

/var/log//mysql:
total 24
drwxrwxr-x 5 root wheel - 170B 19 Oct 12:10 ./
drwxr-xr-x 36 root wheel - 1K 19 Oct 11:54 ../
-rwxrwxr-x 1 mysql wheel - 3K 19 Oct 16:21 error.log
-rwxrwxr-x 1 root wheel - 773B 19 Oct 16:06 logfile.log
-rwxrwxr-x 1 root wheel - 296B 19 Oct 12:11 update.log

Das error.log hat er eigenmächtig wieder auf Owner mysql gesetzt kopfkratz
Naja, zumindest ein Teilerfolg. Guter Hinweis, ich hab gleich zu kompliziert gedacht ;) Hat Du andere Vorschläge, was ich als Benutzer/Gruppe nehmen sollte?
 
Also Dein Problem ist, dass Du "su" nicht benutzen willst?
Dann hast Du jetzt (mindestens) zwei Möglichkeiten:
entweder Du lässt User und Gruppe, wie mysql es haben will, gibst (sofern noch nötig) der Gruppe schreibrecht und fügst den Benutzer, der sich die logs ansehen soll, der Gruppe hinzu.
Oder Du machst (das fände ich (unter diesen Umständen) eleganter) eine neue Gruppe auf, packst den mysql- User und alle, die die Logs lesen sollen, dort hinein, änderst die Gruppe der logfiles auf die neue Gruppe und gibst ihr schreibrechte.
 
Es gibt noch eine Einstellung bezüglich des Users unter dem sich MySql ausgibt.
mysql_daemon_user=username
das gleiche müsste auch für die gruppe gelten
mysql_daemon_group=gruppenname

dann könntest du ja mysql unter deinem account ausführen.

vielleicht kannst du mysql auch mit dir in eine gruppe packen dann müsstest du ja auch lesen und schreiben können.
 
Moin,
danke erstmal für eure Vorschläge. Was ich vergass zu erwähnen, ist, dass die Bank über PHP und Apache im Internet stehen soll. Von daher bin ich mir unsicher, wie paranoide man sein darf/muss was die Benutzerrechte angeht.
tobias.beuth schrieb:
Es gibt noch eine Einstellung bezüglich des Users unter dem sich MySql ausgibt.
mysql_daemon_user=username
das gleiche müsste auch für die gruppe gelten
mysql_daemon_group=gruppenname
dann könntest du ja mysql unter deinem account ausführen.
Irgendwo in der mySQL Anleitung wird erwähnt, dass man auf keinen Fall root als mysql user eintragen soll. Inwieweit das auf mich als admin user zu übertragen ist, weiss ich nicht. Dafür hab' ich zu wenig Ahnung, aber aus dem Bauch heraus würde ich sagen, das lass ich lieber.
Mittlerweile sind meine Einstellungen für die log-files folgendermassen:

drwxr-x--- 6 mysql admin 204B 20 Oct 11:05 ./
drwxr-xr-x 37 root wheel 1K 20 Oct 03:15 ../
-rw-r----- 1 mysql admin 10K 20 Oct 12:39 error.log
-rw-r----- 1 mysql admin 5K 20 Oct 12:39 logfile.log
-rw-r----- 1 mysql admin 807B 20 Oct 12:40 slowqueries.log
-rw-r----- 1 mysql admin 740B 20 Oct 12:39 update.log

Der übergeordnete mysql Ordner muss scheinbar execute Rechte für admin haben, damit ich ihn in der Konsole aufklappen kann. Ansonsten reicht es für die einzelnen log Dateien wenn admin Leserechte hat. Die Anzeige in der Konsole funktioniert und mySQL beschwert sich auch nicht :)
Soweit, so gut. Jetzt wüsste ich nur noch gerne, ob es irgendeine Art von Sicherheitsrisiko darstellt, dass der mysql Ordner execute Rechte für mysql und admin hat.

Gruss, Lupus
 
Stimmt, der ganze Pfad zur Datei muss lesbar sein.
Ich glaub das hat ich auch schonmal.

Also ich denke solang apache nicht in der admin-gruppe ist, kannst du ganz beruhigt sein. Wenn nun mysql in der admin gruppe ist hat es natürlich auch alle gruppen rechte der admin gruppe. nicht die owner rechte. man kann mit mysql auch auf dem filesystem operieren. man kann schreiben und lesen. man kann allerdings nicht überschreiben, was schonmal ein vorteil ist. aber lesen nach wie vor. man kann allerdings dieses recht für mysql user abdrehen. in der mysql datenbank, usertabelle, File_priv auf 'N' setzen. wenn du sichere skripte schreibst, bei denen du sicher sein kannst das man keine SQL-Injection bei ihnen machen kann muss dich das allerdings nicht interessieren.

bedenktlicher ist eigentlich was der apache user kann. den deine php-skripte laufen unter diesem user. und mit php und den entsprechenden rechten kann man alles machen.

naja nun läuft ja alles. wenn du noch fragen hast raus damitr.
 
Zurück
Oben Unten