MySQLDump - 有什么办法可以用 -p 或 --password 输入密码吗?

dav*_*jhp 3 mysql

我有一个带有 MySQL 的 Ubuntu 服务器。

在命令行上,这有效

  mysqldump -u root -p paydaydebt
Run Code Online (Sandbox Code Playgroud)

(然后我必须手动输入密码)

在命令行上,这些不起作用:

mysqldump -u root -p{password} paydaydebt 
mysqldump -u root --password={password} paydaydebt
Run Code Online (Sandbox Code Playgroud)

有什么办法可以用 -p 或 --password 输入密码吗?

mai*_*ilq 7

你应该不会。鉴于命令行中的密码是邪恶的,因为每个发出ps或的人都可以看到它top

推荐的方式是在单独的文件中指定密码,然后添加命令行开关 --defaults-extra-file=/etc/mysql/mysqlpassword.cnf

mysqlpassword.cnf则含有(只):

[mysqldump]
# The following password will be sent to mysqldump 
password="ThisIsThePassword"
Run Code Online (Sandbox Code Playgroud)

确保此文件仅对执行的用户可读mysqldump(最好root)。


use*_*517 6

不要在 -p 和传递给 mysqldump 的密码之间留有空格。如果您在密码中输入空格,则密码将被解释为要操作的数据库的名称。

mysqldump -uroot -pPassword dbase
Run Code Online (Sandbox Code Playgroud)

会转储数据库 dbase

mysqldump -uroot -p Password dbase
Run Code Online (Sandbox Code Playgroud)

会要求输入密码并尝试转储数据库密码。

然而,正如 mailq 所说,您应该避免在命令行上使用密码。


小智 5

除了mailqs答案之外: --defaults-extra-file=/etc/mysql/mysqlpassword.cnf 必须是命令中的第一个选项。例子:

mysqldump --defaults-extra-file=/etc/mysql/mysqlpassword.cnf -u root paydaydebt
Run Code Online (Sandbox Code Playgroud)