Archiv verlassen und diese Seite im Standarddesign anzeigen : Datenbank per SSH übertragen
Geheimagent
30.08.2007, 10: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/
scp sollte dir da weiterhelfen.
Gruß
D.
scp datenbank.sql.gz user@hostname:/home/foobar/
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, 13: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.
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.
Kann man auch daran erkennen, das ssh mit
Password:zur Eingabe des Passwords auffordert, und mysql mit
Enter Password:
Geheimagent
30.08.2007, 17: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.
Achne, du erlaubst root das einloggen per ssh? *räusper*
Geheimagent
30.08.2007, 18: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, 19: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
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{_,}
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, 10: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.
Powered by vBulletin® Version 4.2.0 Copyright ©2013 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.