我有一个带有 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 输入密码吗?
你应该不会。鉴于命令行中的密码是邪恶的,因为每个发出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
)。
不要在 -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)