Скопировать базу данных 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 с удаленного сервера на локальный компьютер?
Ответы
Ответ 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