Kopieer mysql-database van externe server naar lokale computer

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 mysqldumpis 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 DBNAMEdoor 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.sqlvia de FTP-client (moet zich in de hoofdmap bevinden)

Stap 4: Verplaats het sql-bestand naar de map van uw localhost-installatie, waar mysql.exezich bevindt. Ik gebruik uniform-server, dit zou op C:\uniserver\core\mysql\bin\zijn, met XAMPP zou het C:\xampp\mysql\binzijn

Stap 5: Voer de mysql.exeals 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 YourHostNamelocalhost. DestinationPathis 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

Other episodes