У меня есть сервер Ubuntu с MySQL.
В командной строке это работает
mysqldump -u root -p paydaydebt
(тогда мне нужно вручную ввести пароль)
В командной строке они не работают:
mysqldump -u root -p{password} paydaydebt
mysqldump -u root --password={password} paydaydebt
Можно ли как-нибудь ввести пароль с помощью -p или --password?
Вам следует не. Учитывая пароль в командной строке, это зло, так как это видно всем, кто запускает ps
или top
.
Рекомендуемый способ - указать пароль в отдельном файле, а затем добавить переключатель командной строки. --defaults-extra-file=/etc/mysql/mysqlpassword.cnf
В mysqlpassword.cnf
затем содержит (только):
[mysqldump]
# The following password will be sent to mysqldump
password="ThisIsThePassword"
Убедитесь, что этот файл доступен для чтения только пользователю, выполняющему mysqldump
(предпочтительно root
).
Не оставляйте пробел между -p и паролем, который вы передаете mysqldump. Если вы все же поставите пробел в пароле, он будет интерпретирован как имя базы данных, с которой нужно действовать.
mysqldump -uroot -pPassword dbase
сбросил бы базу данных dbase
mysqldump -uroot -p Password dbase
запросит пароль и попытается сбросить пароль базы данных.
Однако, как говорит mailq, вам, вероятно, следует избегать использования пароля в командной строке.
Если ваш пароль содержит специальные символы, вы должны использовать обратную косую черту.
Какая у вас версия mysql? Обычно следующий синтаксис должен работать нормально:
mysqldump -uroot -p'ThisIsThePassword' mysql
Включите пароль между '', чтобы избежать синтаксического анализа специальных символов оболочкой или иным образом избежать их.
В дополнении к mailqs ответ: --defaults-extra-file = / etc / mysql / mysqlpassword.cnf должен быть первым параметром в команде. Пример:
mysqldump --defaults-extra-file=/etc/mysql/mysqlpassword.cnf -u root paydaydebt