PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Datenbank per SSH übertragen



Geheimagent
30.08.2007, 11:26
Kurze Frage, wie sieht ein Befehl aus, um per SSH eine Datenbank in einem entfernten Rechner zu übertragen.
Bisher hatte ich immer einen phpMyAdmin, der steht mir nicht mehr zur Verfügung, und die Daten sind auch zu groß.

Mit diesem Befehl könnte ich eine Datenbank lokal importieren:

mysql -u[dbuser] -p[dbpass] [dbname] < ./backup.sql

Das einloggen, mit ssh ist mir soweit klar, nur nicht, wie ich das in einem rutsch vom lokalen Rechner auf die entfernte Datenbank einspiele.

Die Datenbank befindet sich als datenbank.sql.gz unter /home/geheim/

madfool
30.08.2007, 11:32
scp sollte dir da weiterhelfen.

Gruß
D.

caba_
30.08.2007, 11:36
scp datenbank.sql.gz user@hostname:/home/foobar/

tr0nix
30.08.2007, 12:00
Ich glaub ich habs falsch verstanden.

Was willst du genau? Remote Datenbank mit lokalen Daten schwängern?
ssh <remoterechner> mysql -h localhost -u <user> -p < lokalesfile.sql

Geheimagent
30.08.2007, 14:30
Ich glaub ich habs falsch verstanden.

Was willst du genau? Remote Datenbank mit lokalen Daten schwängern?
ssh <remoterechner> mysql -h localhost -u <user> -p < lokalesfile.sql

Genau, ich möchte die Daten nicht erst an den Fremdrechner übertragen, und sie dann in die Datenbank damit füllen, sondern dieses direkt machen. Ich probier das dann mal gleich aus. Danke.

Edit: Es wird 3 mal das Passwort abgefragt, und dann abgelehnt. Verstehe ich das richtig, ich brauche mich nur mit der IP des Rechners einloggen also:


ssh 666.666.666.666 mysql -h localhost -u geheimagent < geheimmatrial.sql
passwort: geheim

Beim Passwort gebe ich das von der Datenbank ein.

tr0nix
30.08.2007, 15:34
Du musst das Server-Passwort eingeben (also für den Unix User)! Wenn du zusätzlich noch ein Passwort für den MySQL-User brauchst sieht das ganze nochmals anderst aus :) - dann fehlt beispielsweise das "-p" beim mysql Command.

sim4000
30.08.2007, 16:46
Kann man auch daran erkennen, das ssh mit
Password:zur Eingabe des Passwords auffordert, und mysql mit
Enter Password:

Geheimagent
30.08.2007, 18:33
Kann man auch daran erkennen, das ssh mit
Password:zur Eingabe des Passwords auffordert, und mysql mit
Enter Password:

Ah,Danke.


Du musst das Server-Passwort eingeben (also für den Unix User)! Wenn du zusätzlich noch ein Passwort für den MySQL-User brauchst sieht das ganze nochmals anderst aus :) - dann fehlt beispielsweise das "-p" beim mysql Command.

Also das ist so, dass ich sogar ein anderen Benutzer bei der Datenbank habe, als beim ssh, da logge ich mich als root ein, müsste ich den mit

ssh root@666.666.666.666 mysql -h localhost -u geheimagent < geheimmatrial.sql

davorsetzen, und das "-p" vor dem "-h" ?

Danke Dir schon mal für Deine Hilfe herzlichst.

caba_
30.08.2007, 19:33
Achne, du erlaubst root das einloggen per ssh? *räusper*

Geheimagent
30.08.2007, 19:55
Achne, du erlaubst root das einloggen per ssh? *räusper*

Viel sicherer ist niemanden den Zugriff zu erlauben, wenn man ihn nicht braucht. Das ist aber letztendlich nicht mein Problem.

Wolfgang
30.08.2007, 20:11
Hallo

Generell kannst du mit ssh remote Command absetzen.
Am besten du generierst dir dazu einen key und richtest dir eine entsprechende ~/.ssh/config ein.
Dann kannst du einen Alias verwenden, ohne Login mit Passwort. Das ist die sicherste Variante.

e.g:


ssh hostalias "ls -la"


Gruß Wolfgang

caba_
30.08.2007, 22:33
OffTopic:

Generell sind remote root-logins böse.
Lege dir einen User an, oder eine Gruppe die ssh-login darf (z.b. ssh-user)
und dann
adduser geheimagent ssh-user
und dann machst dir nen key mit passphrase.


MFG caba{_,}

tr0nix
31.08.2007, 10:46
Hallo Geheimagent

Mit Passwort
ssh root@666.666.666.666 "mysql -h localhost -u geheimagent -p" < geheimmatrial.sql

Du kannst das Passwort auch direkt mitliefern. Wenn das Passwort AbC123 ist, wäre der String dann:
ssh root@666.666.666.666 "mysql -h localhost -u geheimagent -pAbC123" < geheimmatrial.sql

Ich schlage dir aber folgendes vor:
- Kein root-User zum einloggen. Jeder User kann "mysql" benutzen und muss sich ja sowieso an der DB authentifizieren
- Wenn du keine kritischen Daten in der DB hast, erstelle einen MySQL User der lokal ohne Passwort einloggen kann.
- Wenn du ein Passwort spezifizieren willst, dann musst du dir bewusst sein, dass dieses lesbar sein wird für lokale Benutzer solange du die mysql-Datei lädst ("ps -ef" zeigt den Befehl inkl. dem Passwort an) -> wenn du also nur die DB lädst, wenn du anwesend bist, kannst du das auch auf der Konsole eingeben

P.S. die IP kanns gar ned geben, das weisste schon :)

Geheimagent
01.09.2007, 11:03
Danke für die Informationen. Die Idee einen Datenbanbenutzer ohne Passwort anzulegen ist nicht schlecht, normal könnte man das hinterher dann ja abändern. In Plesk lässt sich jedoch kein Datenbankuser anlegen ohne Passwort, und wie ich gerade festellte, wird ein Datenbankuser jeweils für eine Datenbank angelegt.
und über die Konsole mit root wird, wie ich gerade feststelle das ganze geblockt.
Also komme ich nicht drum rum, erst mal User und Key anzulegen.
Ansonsten ist meine Frage bestens beantwortet. Ich danke Euch für die schnelle und freundlich Hilfe.