Пароль mysql испортил мой дамп
ok, поэтому мне нужно сделать mysqldump базы данных, и это то, что у меня есть
mysqldump -uroot [email protected]$pr!nT --databases app_pro > /srv/DUMPFILE.SQL
но я получаю эту ошибку
-bash: !nT: event not found
похоже, что с паролем трудное время... любым другим способом для mysql dump
Ответы
Ответ 1
Поместите [email protected]$pr!nT
в одинарные кавычки:
mysqldump -uroot '[email protected]$pr!nT' --databases app_pro > /srv/DUMPFILE.SQL
Проблема заключается в том, что bash интерпретирует !
. Строки в одинарных кавычках не интерпретируются.
Ответ 2
Вам нужно избежать "!" в пароле: -
[email protected]$pr\!nT
Ответ 3
Ответы до сих пор не упускают из виду, что вы не должны вводить пароль в командной строке. См. Руководство для конечных пользователей MySQL для защиты паролем, как это сделать, не раскрывая свой пароль.
Ответ 4
Как уже говорили другие, вы никогда не должны указывать пароль в командной строке, так как любой другой процесс на машине способен его прочитать. Простым и эффективным решением для mysql является использование файла .my.cnf
в домашнем каталоге пользователя, использующего mysql или mysqldump.
Сначала создайте его безопасным способом:
sudo touch /root/.my.cnf
sudo chown 0:0 /root/.my.cnf
sudo chmod 600 /root/.my.cnf
затем убедитесь, что /root/.my.cnf
содержит что-то вроде этого:
[mysql]
user=root
[email protected]$pr!nT
[mysqldump]
user=root
[email protected]$pr!nT
Вы можете и должны сделать это для своей "нормальной" (не root) учетной записи mysql. Тогда вам больше не придется вводить пароль и быть в безопасности. Просто поместите .my.cnf в свой собственный домашний каталог с вашими учетными данными в нем и убедитесь, что только вы можете читать и записывать в файл:
touch ~/.my.cnf
chmod 600 /root/.my.cnf
Ответ 5
Try
mysqldump -u root --password='[email protected]$pr!nT' app_pro > /srv/DUMPFILE.SQL
Ответ 6
В соответствии с инструкциями destructions аргументы должны иметь двойные дефисы. (http://dev.mysql.com/doc/refman/5.1/en/mysqldump.html)
Попробуйте следующее:
mysqldump --user=root [email protected]$pr!nT --databases app_pro > /srv/DUMPFILE.SQL
Ответ 7
когда вы используете! в командной строке это означает, что найдите последнюю команду запуска, которая начинается со следующих букв и поместите ее здесь.
перейдите в свою командную строку и запустите "history", а затем запустите некоторые другие команды, cd, ls, что угодно.
то go! h будет выполнена последняя команда, которую вы запускали с буквой "h" (в данном случае "история" ).
вам нужно будет избежать этого удара (!)
Ответ 8
Вы можете отключить расширение истории:
set +o histexpand