Предположим, что я хочу получить доступ к серверу MySQL и распечатать все таблицы, базы данных и их данные на локальном хосте, используя скрипт bash.
Скрипт у меня выглядит так:
mysql -u root -p пароль
После выполнения скрипта вместо bash открывается оболочка mysql. Так как же мне запустить команду с mysql?
Также, какую команду мне следует выполнить, чтобы распечатать все базы данных, таблицы и их данные?
Редактировать: Теперь я понимаю, какую команду мне следует использовать, но вопрос все еще остается:
Мне нужно сделать это в скрипте, но при вводе команды mysqldump она запрашивает пароль в интерактивном режиме.
Так как же мне работать с паролем в скрипте bash?
решение1
Видетьmysqldumpкоторый делает то, что вам нужно.
Пример использования:
mysqldump -u root -p --all-databases
Дополнительные переключатели, подходящие для вашей конкретной ситуации, смотрите в руководстве.
решение2
попробуй это..
mysqldump -u root -p databasename > filename.sql
все таблицы хранятся в filename.sql. это как резервная копия.
а если вы хотите сохранить таблицы обратно в базе данных, то используйте эту команду.
mysqldump -u root -p databasename < filename.sql
решение3
Если вы выполните man mysqldump
, вы получите следующий вывод:
--password[=пароль], -p[пароль]
Пароль, который следует использовать при подключении к серверу. Если вы используете короткую форму параметра (-p), между параметром и паролем не должно быть пробела. Если вы опустите значение пароля после параметра --password или -p в командной строке, mysqldump запросит его.
Указание пароля в командной строке следует считать небезопасным. См. раздел 6.1.2.1, «Руководство конечного пользователя по безопасности паролей». Вы можете использовать файл параметров, чтобы избежать указания пароля в командной строке.
Предполагая, что ваш пароль root — PASSWORD, просто попробуйте следующую команду:
mysqldump -u root -pPASSWORD --all-databases > database.sql