Завантаження дампа MySQL з командного рядка


306

Я віддаляюся від Linode, бо не маю необхідних навичок систематичного управління Linux; перед тим, як завершити перехід на більш зручну послугу, мені потрібно завантажити вміст бази даних MySQL. Чи є спосіб це зробити з командного рядка?



mysqldump - це те, що ви шукаєте.
Фарук Сахін

1
@AZinkey Я думаю, що ти знайдеш прийняту відповідь цієї публікації та вставив вміст моєї відповіді (слово в слово) у першу частину їхньої відповіді через кілька місяців ...
nickhar

Відповіді:


656

Ви можете досягти цього за допомогою функції командного рядка mysqldump .

Наприклад:

Якщо це цілий БД, то:

   $ mysqldump -u [uname] -p db_name > db_backup.sql

Якщо це все БД, то:

   $ mysqldump -u [uname] -p --all-databases > all_db_backup.sql

Якщо це конкретні таблиці в БД, то:

   $ mysqldump -u [uname] -p db_name table1 table2 > table_backup.sql

Ви навіть можете перейти до автоматичного стиснення результатів за допомогою gzip (якщо ваша БД дуже велика):

   $ mysqldump -u [uname] -p db_name | gzip > db_backup.sql.gz

Якщо ви хочете зробити це віддалено, і у вас є доступ до відповідного сервера, тоді буде працювати наступне (припускаючи, що сервер MySQL знаходиться на порту 3306):

   $ mysqldump -P 3306 -h [ip_address] -u [uname] -p db_name > db_backup.sql

Він повинен скинути .sqlфайл у папку, з якої запускається командний рядок.

EDIT: Оновлено, щоб уникнути включення паролів до команд CLI, використовуйте -pпараметр без пароля. Він запропонує вам це, а не записувати його.


1
Ваша відповідь спільно з stackoverflow.com/questions/2989724/… - Якщо робити те, що він просить, оскільки він включив, він потребує завантаження. Це або , що або wgetабо scpбуде необхідно для отримання зазначеного файлу , як тільки побудував.
Зак

47
Невелика примітка, що безпечніше не вводити пароль прямо в команді. Тільки за допомогою параметра -p без пароля буде запропоновано ввести пароль під час запуску, таким чином пароль не зберігатиметься у вашій історії команд (а також може бути отриманий). Тож використовуючи таку команду: mysqldump -P 3306 -h [ip_address] -u [uname] -p db_name> db_backup.sql
Пітт

3
Замість використання >для економії я скоріше використовую -rдля запобігання неприємностей із сторонніми символами або того кошмару, що стосується проблем кодування, як зазначено в цій статті .
Патрос

1
Для великих / активно оновлюваних баз даних використовуйте параметр --single-транзакції. Це створює контрольну точку і допомагає забезпечити узгодженість. Також використовуйте перемикачі - програми - тригери, якщо у вас збережені процедури / функції / тригери
accord_guy

1
Ви повинні використовувати --result-file=db_backup.sqlзамість > db_backup.sql. Цитата з документації на MySQL : "UTF-16 заборонено як набір символів з'єднання (див. Недопустимі набори символів клієнта ), тому файл дампа не завантажується правильно. Щоб вирішити цю проблему, використовуйте --result-fileопцію, яка створює вихід у Формат ASCII ".
Мартін Браун

13

В останніх версіях mysql, принаймні в моїй, ви не можете ввести свій пропуск в команду безпосередньо.

Ви повинні запустити:

mysqldump -u [uname] -p db_name > db_backup.sql

і тоді він запитає пароль.


2
вилучення місця між -pопцією та фактичним паролем робить трюк
y2k-shubham

8

Якщо ви завантажуєте з віддаленого сервера, ось простий приклад:

mysqldump -h my.address.amazonaws.com -u my_username -p db_name > /home/username/db_backup_name.sql

-P означає, що ви введете пароль, він не стосується імені db_name. Після введення команди вам буде запропоновано пароль. Введіть його та натисніть клавішу Enter.


5

У Windows потрібно вказати скриньку mysql, де знаходиться mysqldump.exe.

cd C:\xampp\mysql\bin

mysqldump -u[username] -p[password] --all-databases > C:\localhost.sql

збережіть це у текстовому файлі, такому як backup.cmd


або як правило, у вашій змінній PATH є mysql, щоб ви могли запускати mysqlкоманди звідусіль, не знаходячись у своєму каталозі.
behz4d

2

Відкрийте командний рядок та введіть цю команду безпосередньо. Не заходьте всередину mysql і введіть цю команду.

mysqldump -u [uname] -p[pass] db_name > db_backup.sql

1
Копіювання першого рядка коду з прийнятої відповіді на 5-річне запитання - це смілива стратегія ведення карми.
Філіп Коплі

Я спробував цю команду MySQLdump всередині запиту Mysql і не працював. тому щойно відповів :-)
Нітін Раджа

2

Перейдіть до каталогу встановлення MySQL та відкрийте звідти cmd. Потім виконайте команду нижче, щоб отримати резервну копію вашої бази даних.

mysqldump -u root -p --add-drop-database --databases db> C:\db-dontdelete\db.sql

1

Просто введіть mysqldumpабо mysqldump --helpу вашому cmd буде показаноhow to use

Ось мій результат cmd

C:\Program Files\MySQL\MySQL Server 5.0\bin>mysqldump
Usage: mysqldump [OPTIONS] database [tables]
OR     mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]
OR     mysqldump [OPTIONS] --all-databases [OPTIONS]
For more options, use mysqldump --help

1

Якщо ви використовуєте MySQL, крім порта за замовчуванням:

mysqldump.exe -u username -p -P PORT_NO database > backup.sql

1

Для тих, хто хоче ввести пароль в командному рядку. Можна, але рекомендуємо передати це всередині лапок, щоб спеціальний символ не спричинив жодних проблем.

mysqldump -h'my.address.amazonaws.com' -u'my_username' -p'password' db_name > /path/backupname.sql

-1

Використовуйте це Якщо у вас база даних з іменем archiedb, використовуйте цей mysql -p --databases archiedb> /home/database_backup.sql

Якщо припустити, що це Linux, виберіть, де буде збережено файл резервної копії.


оболонка> mysqldump -p mypassword --дані бази mydb> /home/backup.sql.
Набааса Арчі

-1

Для користувачів Windows ви можете зайти в папку mysql, щоб виконати команду

напр

cd c:\wamp64\bin\mysql\mysql5.7.26\bin
mysqldump -u root -p databasename > dbname_dump.sql

1
Питання передбачає, що MySQL працює на Linux.
gmauch

-1

Примітка. Цей крок відбувається лише після скидання вашого файлу MySQL (на який звернулась більшість відповідей вище).

Він передбачає, що у вас є згаданий файл дампа на віддаленому сервері, і тепер ви хочете звести його на свій локальний комп'ютер.

Щоб завантажити демпінговий .sqlфайл з віддаленого сервера на локальний комп'ютер, зробіть

scp -i YOUR_SSH_KEY your_username@IP:name_of_file.sql ./my_local_project_dir
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.