mysql Backup für jeden User erstellen

MySQL, PostgreSQL, SQLite
thahool
Posts: 20
Joined: 2005-05-30 09:47

mysql Backup für jeden User erstellen

Post by thahool » 2005-06-17 09:45

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!

snowball
Posts: 218
Joined: 2004-09-15 10:14

Re: mysql Backup für jeden User erstellen

Post by snowball » 2005-06-17 09:49

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

chris76
Moderator
Moderator
Posts: 1878
Joined: 2003-06-27 14:37
Location: Germering

Re: mysql Backup für jeden User erstellen

Post by chris76 » 2005-06-17 09:55

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
btw in der SuFu gefunden!
Gruß Christian

BofH excuses: YOU HAVE AN I/O ERROR -> Incompetent Operator error

thahool
Posts: 20
Joined: 2005-05-30 09:47

Re: mysql Backup für jeden User erstellen

Post by thahool » 2005-06-17 11:44

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?

snowball
Posts: 218
Joined: 2004-09-15 10:14

Re: mysql Backup für jeden User erstellen

Post by snowball » 2005-06-17 11:53

thahool wrote: Oder erstellt das Skript von chris76 automatisch dumps von jeder angelegten Datenbank?
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
Posts: 20
Joined: 2005-05-30 09:47

Re: mysql Backup für jeden User erstellen

Post by thahool » 2005-06-17 16:08

perfekt!!! :-D
GENAU das hab ich gesucht!!!

espirt
Posts: 10
Joined: 2005-05-17 17:25

Re: mysql Backup für jeden User erstellen

Post by espirt » 2005-10-26 19:51

Wie kann man das Skript verfeinern, dass man das Backup per FTP auf einen anderen Server transferieren?


Gruss

snowball
Posts: 218
Joined: 2004-09-15 10:14

Re: mysql Backup für jeden User erstellen

Post by snowball » 2005-10-26 20:21

espirt wrote:Wie kann man das Skript verfeinern, dass man das Backup per FTP auf einen anderen Server transferieren?
Das Script einfach noch um die Datenübertragung erweitern.
Siehe auch: ncftpput

espirt
Posts: 10
Joined: 2005-05-17 17:25

Re: mysql Backup für jeden User erstellen

Post by espirt » 2005-10-26 20:47

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)

snowball
Posts: 218
Joined: 2004-09-15 10:14

Re: mysql Backup für jeden User erstellen

Post by snowball » 2005-10-26 20:54

espirt wrote:

Code: Select all

ncftpput -u Benutzer -p Passwort -V backupXXX.tld Lokale-Datei(en)
Da fehlt ein / nach dem FTP-Server

Code: Select all

ncftpput -V -u $FTP_USER -p $FTP_PASS $FTP_HOST / $BACKUPFILE*.gpg 2&>1 > /dev/null

espirt
Posts: 10
Joined: 2005-05-17 17:25

Re: mysql Backup für jeden User erstellen

Post by espirt » 2005-10-26 21:31

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

snowball
Posts: 218
Joined: 2004-09-15 10:14

Re: mysql Backup für jeden User erstellen

Post by snowball » 2005-10-26 21:37

espirt wrote: Wie kann ich es einrichten in welchen Ordner der File gepackt wird?
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: Gibt es auch die Möglichkeit die Paket via Gzip zuverkleinern?
Gibt es, ungefähr so: [Achtung nicht getestet!]

Code: Select all

mysqldump -uroot -proot --opt --quote-names "$i" | gzip > "/home/backup/mysql/$i$date.sql.gz"

espirt
Posts: 10
Joined: 2005-05-17 17:25

Re: mysql Backup für jeden User erstellen

Post by espirt » 2005-10-26 21:58

#!/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?

snowball
Posts: 218
Joined: 2004-09-15 10:14

Re: mysql Backup für jeden User erstellen

Post by snowball » 2005-10-26 22:00

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.

hornox
Posts: 139
Joined: 2005-09-22 23:09

Re: mysql Backup für jeden User erstellen

Post by hornox » 2005-10-26 22:18

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

snowball
Posts: 218
Joined: 2004-09-15 10:14

Re: mysql Backup für jeden User erstellen

Post by snowball » 2005-10-26 22:23

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
Echt? Jetzt bin ich etwas überrascht!
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?

espirt
Posts: 10
Joined: 2005-05-17 17:25

Re: mysql Backup für jeden User erstellen

Post by espirt » 2005-10-26 22:49

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 
Das mit dem Gzip haut hin nur leider bekomme ich das mit dem FTP nicht hin, es kommt auf der anderen Seite nichts hin.

hornox
Posts: 139
Joined: 2005-09-22 23:09

Re: mysql Backup für jeden User erstellen

Post by hornox » 2005-10-26 23:13

Wie kommt man da als anderer User dran?
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:
-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.

espirt
Posts: 10
Joined: 2005-05-17 17:25

Re: mysql Backup für jeden User erstellen

Post by espirt » 2005-10-27 22:27

Kann mir den keiner Helfen?

snowball
Posts: 218
Joined: 2004-09-15 10:14

Re: mysql Backup für jeden User erstellen

Post by snowball » 2005-10-27 22:29

Nimm doch einfach mal den Teil "2&>1 > /dev/null" weg und schaue ob es eine Fehlermeldung gibt.

espirt
Posts: 10
Joined: 2005-05-17 17:25

Re: mysql Backup für jeden User erstellen

Post by espirt » 2005-10-27 22:53

Habe ich gemacht nur leider kommt auf der andere Seite nichts an. Fehlermeldung gibt es nicht.