Ik heb een VPN en ik heb geen SSH-toegang tot de externe server.
Ik kan via console verbinding maken met de database op afstand
mysql -u username -p -h remote.site.com
Nu probeer ik de externe database naar de lokale computer te klonen
mysqldump -u username -p -h remote.site.com mysqldump | mysql -u root -ppassword webstuff
En ik heb een fout
mysqldump: Got error: 1045: Access denied for user 'webstaff'@'10.75.1.2'
(using password: YES) when trying to connect
Hoe kopieer ik een mysql-database van een externe server naar een lokale computer?
Antwoord 1, autoriteit 100%
Ervan uitgaande dat het volgende commando goed werkt:
mysql -u username -p -h remote.site.com
De syntaxis voor mysqldump
is identiek en voert de databasedump uit naar stdout
. Leid de uitvoer om naar een lokaal bestand op de computer:
mysqldump -u username -p -h remote.site.com DBNAME > backup.sql
Vervang DBNAME
door de naam van de database die u naar uw computer wilt downloaden.
Antwoord 2, autoriteit 21%
Controleer de syntaxis en voer één opdracht tegelijk uit, en controleer vervolgens de uitvoer.
mysqldump -u remoteusername -p remotepassword -h your.site.com databasename > dump.sql
mysql -u localusername -p localpassword databasename < dump.sql
Zodra je alle wachtwoorden hebt gevonden, kun je pipe gebruiken.
Antwoord 3, autoriteit 3%
Vaak zijn onze databases erg groot en kost het tijd om de dump rechtstreeks van een externe machine naar een andere machine te brengen, zoals onze andere vrienden hierboven hebben gesuggereerd.
In dergelijke gevallen kunt u de dump op een externe machine doen met behulp van MYSQLDUMP-opdracht
MYSQLDUMP -uuser -p –all-databases > bestandsnaam.sql
en breng dat bestand vervolgens over van een externe server naar uw machine met behulp van Linux SCP-opdracht
scp gebruiker@remote_ip:~/mysql_dump_file_name.sql ./
Antwoord 4, autoriteit 2%
Dit kan verschillende redenen hebben, zoals:
- U gebruikt een onjuist wachtwoord
- De MySQL-server kreeg een foutmelding bij het omzetten van het IP-adres van de clienthost in een naam
- Er worden geen rechten toegekend aan de gebruiker
U kunt een van de volgende stappen proberen:
Om het wachtwoord voor de externe gebruiker opnieuw in te stellen door:
SET PASSWORD FOR some_user@ip_addr_of_remote_client=PASSWORD('some_password');
Toegang verlenen aan de gebruiker door:
GRANT SELECT, INSERT, UPDATE, DELETE, LOCK TABLES ON YourDB.* TO user@Host IDENTIFIED by 'password';
Ik hoop dat dit je helpt, zo niet, dan zul je de documentatie
Antwoord 5, autoriteit 2%
Controleer deze kern.
https://gist.github.com/ecdundar/789660d830d6d40b6c90
#!/bin/bash
# copymysql.sh
# GENERATED WITH USING ARTUR BODERA S SCRIPT
# Source script at: https://gist.github.com/2215200
MYSQLDUMP="/usr/bin/mysqldump"
MYSQL="/usr/bin/mysql"
REMOTESERVERIP=""
REMOTESERVERUSER=""
REMOTESERVERPASSWORD=""
REMOTECONNECTIONSTR="-h ${REMOTESERVERIP} -u ${REMOTESERVERUSER} --password=${REMOTESERVERPASSWORD} "
LOCALSERVERIP=""
LOCALSERVERUSER=""
LOCALSERVERPASSWORD=""
LOCALCONNECTION="-h ${LOCALSERVERIP} -u ${LOCALSERVERUSER} --password=${LOCALSERVERPASSWORD} "
IGNOREVIEWS=""
MYVIEWS=""
IGNOREDATABASES="select schema_name from information_schema.SCHEMATA where schema_name != 'information_schema' and schema_name != 'mysql' and schema_name != 'performance_schema' ;"
# GET A LIST OF DATABASES
databases=`$MYSQL $REMOTECONNECTIONSTR -e "${IGNOREDATABASES}" | tr -d "| " | grep -v schema_name`
# COPY ALL TABLES
for db in $databases; do
# GET LIST OF ITEMS
views=`$MYSQL $REMOTECONNECTIONSTR --batch -N -e "select table_name from information_schema.tables where table_type='VIEW' and table_schema='$db';"
IGNOREVIEWS=""
for view in $views; do
IGNOREVIEWS=${IGNOREVIEWS}" --ignore-table=$db.$view "
done
echo "TABLES "$db
$MYSQL $LOCALCONNECTION --batch -N -e "create database $db; "
$MYSQLDUMP $REMOTECONNECTIONSTR $IGNOREVIEWS --compress --quick --extended-insert --skip-add-locks --skip-comments --skip-disable-keys --default-character-set=latin1 --skip-triggers --single-transaction $db | mysql $LOCALCONNECTION $db
done
# COPY ALL PROCEDURES
for db in $databases; do
echo "PROCEDURES "$db
#PROCEDURES
$MYSQLDUMP $REMOTECONNECTIONSTR --compress --quick --routines --no-create-info --no-data --no-create-db --skip-opt --skip-triggers $db | \
sed -r 's/DEFINER=`[^`]+`@`[^`]+`/DEFINER=CURRENT_USER/g' | mysql $LOCALCONNECTION $db
done
# COPY ALL TRIGGERS
for db in $databases; do
echo "TRIGGERS "$db
#TRIGGERS
$MYSQLDUMP $REMOTECONNECTIONSTR --compress --quick --no-create-info --no-data --no-create-db --skip-opt --triggers $db | \
sed -r 's/DEFINER=`[^`]+`@`[^`]+`/DEFINER=CURRENT_USER/g' | mysql $LOCALCONNECTION $db
done
# COPY ALL VIEWS
for db in $databases; do
# GET LIST OF ITEMS
views=`$MYSQL $REMOTECONNECTIONSTR --batch -N -e "select table_name from information_schema.tables where table_type='VIEW' and table_schema='$db';"`
MYVIEWS=""
for view in $views; do
MYVIEWS=${MYVIEWS}" "$view" "
done
echo "VIEWS "$db
if [ -n "$MYVIEWS" ]; then
#VIEWS
$MYSQLDUMP $REMOTECONNECTIONSTR --compress --quick -Q -f --no-data --skip-comments --skip-triggers --skip-opt --no-create-db --complete-insert --add-drop-table $db $MYVIEWS | \
sed -r 's/DEFINER=`[^`]+`@`[^`]+`/DEFINER=CURRENT_USER/g' | mysql $LOCALCONNECTION $db
fi
done
echo "OK!"
Antwoord 6
Kopieer mysql-database van externe server naar lokale computer
Ik kwam hetzelfde probleem tegen. En ik kon het niet voor elkaar krijgen met de andere antwoorden. Dus hier is hoe ik het uiteindelijk deed (ja, een tutorial voor beginners):
Stap 1: Maak een nieuwe database aan in uw lokale phpmyadmin.
Stap 2: Dump de database op de externe server in een sql-bestand (hier gebruikte ik Putty/SSH):
mysqldump --host="mysql5.domain.com" --user="db231231" --password="DBPASSWORD" databasename > dbdump.sql
Stap 3: Download het bestand dbdump.sql
via de FTP-client (moet zich in de hoofdmap bevinden)
Stap 4: Verplaats het sql-bestand naar de map van uw localhost-installatie, waar mysql.exe
zich bevindt. Ik gebruik uniform-server, dit zou op C:\uniserver\core\mysql\bin\
zijn, met XAMPP zou het C:\xampp\mysql\bin
zijn
Stap 5: Voer de mysql.exe
als volgt uit:
mysql.exe -u root -pYOURPASSWORD YOURLOCALDBNAME < dbdump.sql
Stap 6: Wacht… afhankelijk van de bestandsgrootte. U kunt de voortgang controleren in phpmyadmin en nieuw gemaakte tabellen zien.
Stap 7: Klaar. Ga naar je lokale phpmyadmin om te controleren of de database is gevuld met alle gegevens.
Ik hoop dat dat helpt. Veel succes!
Opmerking 1: Bij het starten van de uniformer-server kunt u een wachtwoord voor mysql opgeven. Dit is degene die u hierboven moet gebruiken voor UW PASWOORD.
Opmerking 2: Als het inloggen niet werkt en u tegen wachtwoordproblemen aanloopt, controleer dan uw wachtwoord als het speciale tekens bevat, zoals !
. Zo ja, dan moet je ze waarschijnlijk \!
ontlopen.
Opmerking 3: Als niet alle mysql-gegevens na het importeren in de lokale db terug te vinden zijn, kan het zijn dat er een probleem is met de mysql-richtlijnen van uw dbdump.sql
Antwoord 7
Je kunt nog beter een oneliner gebruiken:
Dump remoteDB naar localDB:
mysqldump -uroot -pMypsw -h remoteHost remoteDB | mysql -u root -pMypsw localDB
Dump localDB naar remoteDB:
mysqldump -uroot -pmyPsw localDB | mysql -uroot -pMypsw -h remoteHost remoteDB
Antwoord 8
C:\Users\>mysqldump -u root -p -h ip address --databases database_name -r sql_file.sql
Enter password: your_password
Antwoord 9
Dit antwoord is geen externe server maar een lokale server. De logica zou hetzelfde moeten zijn. Om de MAMP-database van mijn lokale computer te kopiëren en er een back-up van te maken naar de map van mijn lokale desktopcomputer, ga je naar console en vervolgens
mysqldump -h YourHostName -u YourUserNameHere -p YourDataBaseNameHere > DestinationPath/xxxwhatever.sql
In mijn geval was YourHostName
localhost
. DestinationPath
is het pad naar de download; je kunt je gewenste doelmap slepen en neerzetten en het zal het pad erin plakken.
Dan kan er om een wachtwoord worden gevraagd:
Enter password: xxxxxxxx