Hello
Mi a hiba ebben?
A cél az volna, hogy a távoli szerveren lévő adatbázisokat le tudjam szinkronizálni a helyi szerverre.
ERROR 1064 (42000) hibával elszáll, mert a mysqldump syntax nem jó szerinte.
while read line
do
ssh -p 11111 root@remoteip \ 'mysqldump -u root -ppassword --databases $line' \ | mysql -u root -h localhost -ppassword $line
done < db_lista.txt
Próbáltam --databases -el meg anélkül is, de akkor sem tetszik neki.
- 2972 megtekintés
Hozzászólások
A ' és a \ jelekre miért is van szükség?
Gabi
- A hozzászóláshoz be kell jelentkezni
ssh -l sshuser ip.cim "mysqldump -u root -pezittajelszo dbname"
- A hozzászóláshoz be kell jelentkezni
lehet en ertem felre
miert kell ssh?
GRANT SELECT, SHOW VIEW, RELOAD, REPLICATION CLIENT, EVENT, TRIGGER ON *.* TO 'backup'@'tavoliip' identified BY 'jelszo';
mysql -ubackup -p -h mysqlip
- A hozzászóláshoz be kell jelentkezni
mert -ha jól emlékszem- vagy localhost-ra / bármi más ip-re bind-olod a mysql-t vagy "mindenen" ip-n figyel és tűzfalszabályokkal korlátozhatod le.
a te esetedre a második opció jön szóba, lehet hogy a kérdezőnél az első játszik jelenleg
persze szóba jöhet forward is mint opció..
- A hozzászóláshoz be kell jelentkezni
Talán a kommunikációs csatorna titkosítására?
- A hozzászóláshoz be kell jelentkezni
A mysql beszel sslt.
- A hozzászóláshoz be kell jelentkezni
Valóban képes rá, de a kérdező valószínűleg nem akart ezzel vesződni.
- A hozzászóláshoz be kell jelentkezni
-
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
Kérlek, nézd meg jobban a kezdőposztot! Az ssh nem csak port forward esetén titkosítja a csatornát.
- A hozzászóláshoz be kell jelentkezni
bocs, nem értem, ezzel mit akarsz mondani.
A kérdező SSH-n keresztül kiadja a távoli gépnek a parancsot, ami nem akar működni úgy, mint szeretné.
Én pedig azt javasoltam, hogy SSH-val felépít egy kapcsolatot a távoli SQL szerverhez, és onnantól
már a távoli mysql servert "localként" tudja használni a scriptjeiben, az immár titkosított csatornán keresztül - úgy, hogy a mysql a túlvégen nincsen "kinyitva a világ felé".
- A hozzászóláshoz be kell jelentkezni
A távoli gépen futtatott parancs vége így látszik: --databases $line
, mert az egyszeres idézőjel miatt nem oldja fel a változót.
Próbáld meg kettes idézőjelek közé tenni ("távoli parancs"), jó eséllyel működni fog...
Esetleg adj neki terminált is (-tt opció az ssh-nak), hátha az a gondja...
Meg érdemes ilyen hiba esetén az ssh parancs előtt kiiratni az aktuális változót is:
do
echo "aktualis db: $line"
ssh ...
done < db_lista.txt
- A hozzászóláshoz be kell jelentkezni
Ha a while ciklusba raktam akkor csak egy adatbázist volt hajlandó megcsinálni.
Átírtam most két lépésbe, először leszedi egy helyi sql file-ba, majd második lépésként beimportálom. Érdekes módon while ciklusban nem volt hajlandó megcsinálni de for-al igen.
Köszönöm azért a segítséget.
- A hozzászóláshoz be kell jelentkezni
Replikacio nem lenne jobb inkabb erre, ha van allando kapcsolat?
---------------------------------------------------
Hell is empty and all the devils are here.
-- Wm. Shakespeare, "The Tempest"
- A hozzászóláshoz be kell jelentkezni
Akkor meg kellene nyitnom a mysql port, de azt nem szeretném. Ez a megoldás most így megfelel egyelőre számomra.
- A hozzászóláshoz be kell jelentkezni
Erre valo pl. Stunnel, ami eleg secure szerintem, es nincs kinyitva maris a port...
---------------------------------------------------
Hell is empty and all the devils are here.
-- Wm. Shakespeare, "The Tempest"
- A hozzászóláshoz be kell jelentkezni
Én inkább azt csinálnám, hogy a tvoli szerveren csinálnék egy uszert és megoldanám az ssh kulcsal bejelentkezést.
Aztán portforward ezzel a userrel:
ssh -AfN myuser@a.server.lan -L13306:localhost:3306
Ez bejelentkezik a serverre aztn elmegy a háttérbe és csinál egy portforwardot
A dump ugyan az mint ahogy csináltad, csak localhost:13306 -ról csinálod a betöltés természetesen ugyan az.
----
올드보이
http://molnaristvan.eu/
- A hozzászóláshoz be kell jelentkezni