Поскольку вы используете Ubuntu, все, что вам нужно сделать, это просто добавить файл в ваш домашний каталог, и он отключит запрос пароля mysqldump. Это делается путем создания файла ~/.my.cnf
(разрешения должны быть 600).
Добавьте это в файл .my.cnf
[mysqldump]
user=mysqluser
password=secret
Это позволяет вам подключаться как пользователь MySQL, которому требуется пароль без необходимости его ввода. Вам даже не нужен ключ -p или --password.
Очень удобно для написания сценариев команд mysql и mysqldump.
Шаги для достижения этой цели можно найти по этой ссылке .
В качестве альтернативы вы можете использовать следующую команду:
mysqldump -u [user name] -p[password] [database name] > [dump file]
но имейте в виду, что это по своей сути небезопасно, поскольку вся команда (включая пароль) может быть просмотрена любым другим пользователем в системе во время выполнения дампа с помощью простой ps ax
команды.
--defaults-file
. Например, `mysqldump --defaults-file = my_other.cnf --print-defaults`~/.my.cnf
. См. Stackoverflow.com/a/14653239/470749 . MySql ожидал, что мой будет наc:\wamp\bin\mysql\mysql5.5.24\my.cnf
. Поэтому я создал файл там. Перезапуск Mysql не был необходим; это немедленно сработало для моего следующего mysqldump.GRANT LOCK TABLES, SELECT ON *.* TO 'BACKUPUSER'@'%' IDENTIFIED BY 'PASSWORD';
Добавление к ответу @ Frankline:
Эта
-p
опция должна быть исключена из команды, чтобы использовать пароль в файле конфигурации.Верный:
mysqldump –u my_username my_db > my_db.sql
Неправильно:
mysqldump –u my_username -p my_db > my_db.sql
.my.cnf
может опустить имя пользователя.Если ваш
.my.cnf
файл не находится в расположении по умолчанию иmysqldump
не видит его, укажите его, используя--defaults-file
.mysqldump --defaults-file=/path-to-file/.my.cnf –u my_username my_db > my_db.sql
источник
В нескольких ответах упоминается установка пароля в файле конфигурации.
В качестве альтернативы, из вашего сценария вы можете
export MYSQL_PWD=yourverysecretpassword
.Преимуществом этого метода по сравнению с использованием файла конфигурации является то, что вам не нужен отдельный файл конфигурации для синхронизации с вашим сценарием. У вас есть только сценарий для поддержки.
У этого метода нет недостатков .
Пароль не виден другим пользователям в системе (он будет виден, если он находится в командной строке). Переменные среды видны только пользователю, выполняющему команду mysql и root.
Пароль также будет виден любому, кто может прочитать сам скрипт, поэтому убедитесь, что сам скрипт защищен. Это ничем не отличается от защиты файла конфигурации. Вы все еще можете получить пароль из отдельного файла, если вы хотите, чтобы скрипт был общедоступным (
export MYSQL_PWD=$(cat /root/mysql_password)
например). Все еще проще экспортировать переменную, чем создавать файл конфигурации.Например,
источник
export MYSQL_PWD=...
Никак не отображается в списке процессов. Даже на долю секунды. Это потому, чтоexport
команда является (и должна быть) встроенной оболочкой. Таким образом, оболочка не запускает / выполняет процесс с аргументом команды, если вы выполняете его в своей оболочке.Чтобы использовать файл, который находится где-нибудь внутри ОС, используйте,
--defaults-extra-file
например:Примечание:
.sqlpwd
это просто пример имени файла. Вы можете использовать все, что пожелаете.Примечание: MySQL автоматически проверит,
~/.my.cnf
какой из них можно использовать вместо--defaults-extra-file
Если вы используете CRON, как я, попробуйте это!
Требуемое разрешение и рекомендуемая собственность
.sqlpwd
содержание:Другие примеры для передачи
.cnf
или.sqlpwd
Если вы хотите войти в базу данных автоматически, вам потребуется,
[mysql]
например, запись.Теперь вы можете создать псевдоним, который автоматически соединяет вас с БД
Вы также можете только ввести пароль внутрь
.sqlpwd
и передать имя пользователя через скрипт / cli. Я не уверен, улучшит ли это безопасность или нет, это был бы совсем другой вопрос.Для полноты картины я скажу, что вы можете сделать следующее, но крайне небезопасно и никогда не должно использоваться в производственной среде:
Примечание: между -p и паролем нет пробела.
Например
-pPassWord
, правильно, а-p Password
неправильно.источник
Да, это очень легко .... только в одной волшебной командной строке не более
и сделано :)
источник
Для меня, используя MariaDB, я должен был сделать это: Добавить файл
~/.my.cnf
и изменить разрешения, выполнивchmod 600 ~/.my.cnf
. Затем добавьте свои учетные данные в файл. Волшебная часть, которую я пропустил, заключалась в том, что пароль должен находиться под клиентским блоком (ref: docs ), вот так:Если вы пришли сюда в поисках, как сделать mysqldump с MariaDB. Поместите пароль в блок [client], а затем пользователя в блок [mysqldump].
источник
[mysqldump]
разделе, и он работал без каких-либо проблем. Ubuntu 18.04 LTSВот решение для Docker в сценарии / bin / sh:
Замените
[MYSQL_CONTAINER_NAME]
и убедитесь, что переменная окруженияMYSQL_ROOT_PASSWORD
установлена в вашем контейнере.Надеюсь, это поможет вам, как это может помочь мне!
источник
У меня есть следующее.
/ И т.д. / mysqlpwd
Со следующим псевдонимом.
Для восстановления я просто использую:
источник
что насчет --password = "" у меня сработало на 5.1.51
источник
--password=xxx
в командную строку сделает пароль видимым для любого, кто может читать proc (или делать полные пс) - что довольно по умолчанию.Определенно, я думаю, что было бы лучше и безопаснее поместить полную строку cmd в корневой файл crontatails. По крайней мере, редактирование crontab ограничено (доступно для чтения) тем, кто уже знает пароль .. поэтому не стоит беспокоиться, чтобы показать его в виде обычного текста ...
Если нужно больше, чем простой mysqldump ... просто поместите скрипт bash, который принимает учетные данные в качестве параметров и выполняет все удобства внутри ...
Базовый файл в простом
В Crontab:
источник
Вы можете указать пароль в командной строке следующим образом:
Опции для mysqldump чувствительны к регистру!
источник
mysqldump -u root -pmypassword