mysql Backup für jeden User erstellen
mysql Backup für jeden User erstellen
Hallo!
Leider habe ich in der SuFU nichts entsprechendes gefunden, deshalb hier mein Anliegen:
Ich würde gerne ein tägliches Backup meiner mysql Datenbank machen, wobei die Möglichkeit bestehen muss, dass ich diese nur teilweise wiederherstellen kann.
Wenn also Kunde A seine Datenbank crasht, dann hilft es nix wenn ich einen kompletten dump wiedereinspiele wo dann die Datenbank der anderen Kunden mit überschrieben werden.
Wie kann ich das am besten realisieren?
Danke!
Leider habe ich in der SuFU nichts entsprechendes gefunden, deshalb hier mein Anliegen:
Ich würde gerne ein tägliches Backup meiner mysql Datenbank machen, wobei die Möglichkeit bestehen muss, dass ich diese nur teilweise wiederherstellen kann.
Wenn also Kunde A seine Datenbank crasht, dann hilft es nix wenn ich einen kompletten dump wiedereinspiele wo dann die Datenbank der anderen Kunden mit überschrieben werden.
Wie kann ich das am besten realisieren?
Danke!
Re: mysql Backup für jeden User erstellen
Hi,
mit mysqldump gibts du doch die DB an, die gesichert werden soll. Ich gehe mal davon aus, das jeder deiner Kunden seine eigene DB hat oder? Und wenn dann ein Kunde seine DB schrottet, dann musst du doch auch nur seine wieder herstellen.
greets
Jochen
mit mysqldump gibts du doch die DB an, die gesichert werden soll. Ich gehe mal davon aus, das jeder deiner Kunden seine eigene DB hat oder? Und wenn dann ein Kunde seine DB schrottet, dann musst du doch auch nur seine wieder herstellen.
greets
Jochen
Re: mysql Backup für jeden User erstellen
Code: Select all
#!/bin/sh
date=`date -I`
for i in `mysql -uroot -proot -Bs -e "show databases"`
do
mysqldump -uroot -proot --opt --quote-names "$i" > "/home/backup/mysql/$i$date.sql"
done
Gruß Christian
BofH excuses: YOU HAVE AN I/O ERROR -> Incompetent Operator error
BofH excuses: YOU HAVE AN I/O ERROR -> Incompetent Operator error
Re: mysql Backup für jeden User erstellen
Danke für Eure Antworten!
Aber bei dieser Lösung muss ich doch für jede Datenbank ein Skript schreiben, oder? Wenn jetzt ein Kunde selber eine DB erstellt, und ich nix davon weiss dann siehts schlecht aus, oder?
Oder erstellt das Skript von chris76 automatisch dumps von jeder angelegten Datenbank?
Aber bei dieser Lösung muss ich doch für jede Datenbank ein Skript schreiben, oder? Wenn jetzt ein Kunde selber eine DB erstellt, und ich nix davon weiss dann siehts schlecht aus, oder?
Oder erstellt das Skript von chris76 automatisch dumps von jeder angelegten Datenbank?
Re: mysql Backup für jeden User erstellen
Ja, macht es. Der Teil mit dem 'show databases' listet alle DBs auf und sichert dann jede einzelene DB. Aber teste das doch einfach mal...thahool wrote: Oder erstellt das Skript von chris76 automatisch dumps von jeder angelegten Datenbank?
Re: mysql Backup für jeden User erstellen
perfekt!!! :-D
GENAU das hab ich gesucht!!!
GENAU das hab ich gesucht!!!
Re: mysql Backup für jeden User erstellen
Wie kann man das Skript verfeinern, dass man das Backup per FTP auf einen anderen Server transferieren?
Gruss
Gruss
Re: mysql Backup für jeden User erstellen
Das Script einfach noch um die Datenübertragung erweitern.espirt wrote:Wie kann man das Skript verfeinern, dass man das Backup per FTP auf einen anderen Server transferieren?
Siehe auch: ncftpput
Re: mysql Backup für jeden User erstellen
Wie würde das Gesamte Script dann aussehen? Weil ja mehrere Datenbankenbackups erstellt werden.
Code: Select all
#!/bin/sh
date=`date -I`
for i in `mysql -uroot -proot -Bs -e "show databases"`
do
mysqldump -uroot -proot --opt --quote-names "$i" > "/home/backup/mysql/$i$date.sql"
done
ncftpput -u Benutzer -p Passwort -V backupXXX.tld Lokale-Datei(en)
Re: mysql Backup für jeden User erstellen
Da fehlt ein / nach dem FTP-Serverespirt wrote:Code: Select all
ncftpput -u Benutzer -p Passwort -V backupXXX.tld Lokale-Datei(en)
Code: Select all
ncftpput -V -u $FTP_USER -p $FTP_PASS $FTP_HOST / $BACKUPFILE*.gpg 2&>1 > /dev/null
Re: mysql Backup für jeden User erstellen
Sorry ich kenne mich leider nicht ganz so gut aus.
Das Skript läuft bei mir jetzt wo ich noch ein Problem habe ist das mit dem FTP.
Wie kann ich es einrichten in welchen Ordner der File gepackt wird?
Gibt es auch die Möglichkeit die Paket via Gzip zuverkleinern?
#!/bin/sh
date=`date -I`
for i in `mysql -uroot -proot -Bs -e "show databases"`
do
mysqldump -uroot -proot --opt --quote-names "$i" > "/home/backup/mysql/$i$date.sql"
done
ncftpput -V -u $FTP_USER -p $FTP_PASS $FTP_HOST / $BACKUPFILE*.gpg 2&>1 > /dev/null
Das Skript läuft bei mir jetzt wo ich noch ein Problem habe ist das mit dem FTP.
Wie kann ich es einrichten in welchen Ordner der File gepackt wird?
Gibt es auch die Möglichkeit die Paket via Gzip zuverkleinern?
#!/bin/sh
date=`date -I`
for i in `mysql -uroot -proot -Bs -e "show databases"`
do
mysqldump -uroot -proot --opt --quote-names "$i" > "/home/backup/mysql/$i$date.sql"
done
ncftpput -V -u $FTP_USER -p $FTP_PASS $FTP_HOST / $BACKUPFILE*.gpg 2&>1 > /dev/null
Re: mysql Backup für jeden User erstellen
Wenn du auf dem FTP-Server meinst, kannst du das Verzeichniss hinter dem / angeben, wo du die Dateien hin haben möchtest (der / den du beim ersten mal nicht hattest)espirt wrote: Wie kann ich es einrichten in welchen Ordner der File gepackt wird?
Gibt es, ungefähr so: [Achtung nicht getestet!]espirt wrote: Gibt es auch die Möglichkeit die Paket via Gzip zuverkleinern?
Code: Select all
mysqldump -uroot -proot --opt --quote-names "$i" | gzip > "/home/backup/mysql/$i$date.sql.gz"
Re: mysql Backup für jeden User erstellen
#!/bin/sh
date=`date -I`
for i in `mysql -uroot -proot -Bs -e "show databases"`
do
mysqldump -uroot -proot --opt --quote-names "$i" > "/home/backup/mysql/$i$date.sql"
done
ncftpput -V -u $FTP_USER -p $FTP_PASS $FTP_HOST / /backup/$BACKUPFILE*.gpg 2&>1 > /dev/null
Ist dieses richtig?
date=`date -I`
for i in `mysql -uroot -proot -Bs -e "show databases"`
do
mysqldump -uroot -proot --opt --quote-names "$i" > "/home/backup/mysql/$i$date.sql"
done
ncftpput -V -u $FTP_USER -p $FTP_PASS $FTP_HOST / /backup/$BACKUPFILE*.gpg 2&>1 > /dev/null
Ist dieses richtig?
Re: mysql Backup für jeden User erstellen
Aussser das der Teil mit dem GZip nicht drinn ist, denke ich schon. Aber warum probierst du es nicht einfach mal aus? Ein bischen Eigeninitiative hat noch keinem geschadet.
Re: mysql Backup für jeden User erstellen
Wenn das Passwort per Komandozeile übergeben wird kann es jeder andere Benutzer ausspähen, selbst wenn der Benutzer keine shell sondern nur CGIs oder PHP ohne safe_mode hat.
Eine ~/.my.cnf Datei (mit 700 chmod Rechten ;)) mit folgendem Abschnitt lößt das Problem
Eine ~/.my.cnf Datei (mit 700 chmod Rechten ;)) mit folgendem Abschnitt lößt das Problem
[mysqldump]
user=user
password=passwort
Re: mysql Backup für jeden User erstellen
Echt? Jetzt bin ich etwas überrascht!HornOx wrote:Wenn das Passwort per Komandozeile übergeben wird kann es jeder andere Benutzer ausspähen, selbst wenn der Benutzer keine shell sondern nur CGIs oder PHP ohne safe_mode hat.
Eine ~/.my.cnf Datei (mit 700 chmod Rechten ;)) mit folgendem Abschnitt lößt das Problem[mysqldump]
user=user
password=passwort
Bei mir liegt so ein ähnliches Backupscript im Verzeichnis /usr/local/sbin Die Datei gehört: root.root und hat 700er Rechte. Auch wenn man theoretisch die Datei über PHP einlesen könnte, sollte doch die Bereichtigung verhindern, sie auszulesen oder? Wie kommt man da als anderer User dran? Gibt es da eine Sicherheitslücke in der Ã?bergabe der Passwörter?
Re: mysql Backup für jeden User erstellen
snowball wrote:Aussser das der Teil mit dem GZip nicht drinn ist, denke ich schon. Aber warum probierst du es nicht einfach mal aus? Ein bischen Eigeninitiative hat noch keinem geschadet.
Code: Select all
#!/bin/sh
date=`date -I`
for i in `mysql -uroot -proot -Bs -e "show databases"`
do
mysqldump -uroot -proot --opt --quote-names "$i" | gzip > "/home/backup/mysql/$i$date.sql.gz"
done
ncftpput -V -u $FTP_USER -p $FTP_PASS $FTP_HOST / backup/$BACKUPFILE*.gpg 2&>1 > /dev/null
Re: mysql Backup für jeden User erstellen
Per "ps aux" oder "cat /proc/*/cmdline" wenn das Backup gerade läuft. Das ist keine Sicherheitlücke weil es eigentlich jeder Admin wissen sollte und in der Dokumentation wird das sogar explizit erwähnt:Wie kommt man da als anderer User dran?
-p|--password[=pwd]
Employ the specified password when connecting to the database server. If a password is not supplied, it will be requested interactively. WARNING: This is
insecure as the password is visible for anyone through /proc for a short time.
Re: mysql Backup für jeden User erstellen
Kann mir den keiner Helfen?
Re: mysql Backup für jeden User erstellen
Nimm doch einfach mal den Teil "2&>1 > /dev/null" weg und schaue ob es eine Fehlermeldung gibt.
Re: mysql Backup für jeden User erstellen
Habe ich gemacht nur leider kommt auf der andere Seite nichts an. Fehlermeldung gibt es nicht.