我有一个装有 MySQL 的 Ubuntu 服务器。
在命令行上,这有效
mysqldump -u root -p paydaydebt
(然后我必须手动输入密码)
在命令行上,这些不起作用:
mysqldump -u root -p{password} paydaydebt
mysqldump -u root --password={password} paydaydebt
我可以用 -p 或 --password 输入密码吗?
答案1
你应该不是。在命令行中输入的密码是邪恶的,因为每个发出ps
或 的人都可以看到它top
。
推荐的方式是在单独的文件中指定密码,然后添加命令行开关--defaults-extra-file=/etc/mysql/mysqlpassword.cnf
然后mysqlpassword.cnf
包含(仅):
[mysqldump]
# The following password will be sent to mysqldump
password="ThisIsThePassword"
确保此文件只有执行mysqldump
(最好root
)的用户可读。
答案2
不要在 -p 和传递给 mysqldump 的密码之间留空格。如果在密码中留了空格,则密码将被解释为要执行操作的数据库的名称。
mysqldump -uroot -pPassword dbase
将转储数据库 dbase
mysqldump -uroot -p Password dbase
会要求输入密码并尝试转储数据库密码。
但是正如 mailq 所说,您应该避免在命令行上使用密码。
答案3
此外邮件队列答案:--defaults-extra-file=/etc/mysql/mysqlpassword.cnf 必须是命令中的第一个选项。例如:
mysqldump --defaults-extra-file=/etc/mysql/mysqlpassword.cnf -u root paydaydebt
答案4
你的 mysql 版本是什么?通常,以下语法应该可以正常工作:
mysqldump -uroot -p'ThisIsThePassword' mysql
将密码放在 ' 之间,以避免 shell 解析特殊字符或以其他方式转义它们。如果这不起作用,请尝试改用“”。