Подтвердить что ты не робот

Скопировать базу данных mysql с удаленного сервера на локальный компьютер

Я подключен к VPN, и у меня нет доступа SSH к удаленному серверу.

Я могу подключиться к удаленной базе данных с помощью консоли

mysql -u username -p -h remote.site.com

Теперь я пытаюсь клонировать удаленную базу данных на локальный компьютер

mysqldump -u username -p -h remote.site.com mysqldump | mysql -u root -ppassword webstuff

И у меня есть ошибка

mysqldump: Got error: 1045: Access denied for user 'webstaff'@'10.75.1.2' 
(using password: YES) when trying to connect

Как скопировать базу данных mysql с удаленного сервера на локальный компьютер?

4b9b3361

Ответ 1

Предполагая, что следующая команда работает успешно:

mysql -u username -p -h remote.site.com

Синтаксис для mysqldump идентичен, и выдает дамп базы данных stdout. Перенаправить вывод в локальный файл на компьютере:

mysqldump -u username -p -h remote.site.com DBNAME > backup.sql

Замените DBNAME на имя базы данных, которую вы хотите загрузить на свой компьютер.

Ответ 2

Проверить синтаксис и выполнить одну команду за раз, а затем проверить вывод.

mysqldump -u remoteusername -p remotepassword -h your.site.com databasename > dump.sql

mysql -u localusername -p localpassword databasename < dump.sql

Как только вы сопоставили все пароли, вы можете использовать pipe.

Ответ 3

У этого могут быть разные причины, например:

  • Вы используете неправильный пароль
  • Сервер MySQL получил сообщение об ошибке при попытке разрешить IP-адрес хоста клиента имени
  • Пользователям не предоставляются привилегии

Вы можете выполнить одно из следующих действий:

В reset пароль для удаленного пользователя:

SET PASSWORD FOR [email protected]_addr_of_remote_client=PASSWORD('some_password');

Предоставить доступ пользователю:

GRANT SELECT, INSERT, UPDATE, DELETE, LOCK TABLES ON YourDB.* TO [email protected] IDENTIFIED by 'password';

Надеюсь, это поможет вам, если нет, вам придется пройти через документацию

Ответ 4

Пожалуйста, проверьте этот смысл.

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!"

Ответ 5

Часто наши базы данных действительно большие, и требуется время, чтобы взять дамп непосредственно с удаленной машины на другую машину, как предложили другие наши друзья.

В таких случаях вы можете сделать дамп на удаленной машине, используя команду MYSQLDUMP

MYSQLDUMP -uuser -p --all-databases > file_name.sql

и передать этот файл с удаленного сервера на ваш компьютер с помощью команды Linux SCP

scp user @remote_ip: ~/mysql_dump_file_name.sql./

Ответ 6

Скопировать базу данных mysql с удаленного сервера на локальный компьютер

Я столкнулся с той же проблемой. И я не мог сделать это с другими ответами. Итак, вот как я это сделал (да, новичок):

Шаг 1. Создайте новую базу данных в локальном phpmyadmin.

Шаг 2: Дамп базы данных на удаленном сервере в sql файл (здесь я использовал Putty/SSH):

mysqldump --host="mysql5.domain.com" --user="db231231" --password="DBPASSWORD" databasename > dbdump.sql

Шаг 3: Загрузите файл dbdump.sql через FTP-клиент (он должен находиться в корневой папке)

Шаг 4: Переместите файл sql в папку вашей локальной установки, где находится mysql.exe. Я использую равномерный сервер, это будет в C:\uniserver\core\mysql\bin\, при этом XAMPP будет C:\xampp\mysql\bin

Шаг 5: Выполните mysql.exe следующим образом:

 mysql.exe -u root -pYOURPASSWORD YOURLOCALDBNAME < dbdump.sql

Шаг 6: Подождите... в зависимости от размера файла. Вы можете проверить прогресс в phpmyadmin, увидев вновь созданные таблицы.

Шаг 7: Готово. Перейдите на свой локальный phpmyadmin, чтобы проверить, заполнена ли база данных целыми данными.

Надеюсь, что это поможет. Удачи!


Примечание 1: При запуске унифицированного сервера вы можете указать пароль для mysql. Это тот, который вы должны использовать выше для YOURPASSWORD.

Примечание 2: Если логин не работает и вы сталкиваетесь с проблемами с паролем, проверьте свой пароль, если он содержит специальные символы, такие как !. Если это так, то вам, вероятно, нужно избежать их \!.

Примечание 3: Если не все данные mysql могут быть найдены в локальной базе данных после импорта, возможно, существует проблема с директивами mysql вашего dbdump.sql

Ответ 7

C:\Users\>mysqldump -u root -p -h ip address --databases database_name -r sql_file.sql
Enter password: your_password

Ответ 8

Этот ответ не является удаленным сервером, а локальным сервером. Логика должна быть одинаковой. Чтобы скопировать и создать резервную копию базы данных MAP на локальном компьютере в моей локальной папке на рабочем столе, перейдите к консоли, затем

mysqldump -h YourHostName -u YourUserNameHere -p YourDataBaseNameHere > DestinationPath/xxxwhatever.sql

В моем случае YourHostName был localhost. DestinationPath - путь к загрузке; вы можете перетащить нужную папку назначения и вставить путь.

Затем может быть задан пароль:

Enter password: xxxxxxxx

Ответ 9

Еще лучше использовать oneliner:

Дамп удаленного DB в localDB:

mysqldump -uroot -pMypsw -h remoteHost remoteDB | mysql -u root -pMypsw localDB

Дамп localDB на remoteDB:

mysqldump -uroot -pmyPsw localDB | mysql -uroot -pMypsw -h remoteHost remoteDB