我想知道在没有提示密码的情况下执行数据库mysqldump的命令。

原因: 我想运行一个cron作业,每天对数据库进行一次mysqldump。因此,当提示时,我将无法插入密码。

我怎么解决这个问题呢?


当前回答

当然,我认为把完整的cmd行放在根crontab中会更好,更安全。 至少crontab编辑被限制(可读)给已经知道密码的人。所以不用担心用纯文本显示它……

如果需要一个简单的mysqldump…只需放置一个bash脚本,接受cred作为参数,并在里面执行所有设施…

bas文件在simple

#!/bin/bash
mysqldump -u$1 -p$2 yourdbname > /your/path/save.sql

在Crontab中:

0 0 * * * bash /path/to/above/bash/file.sh root secretpwd 2>&1 /var/log/mycustomMysqlDump.log

其他回答

当然,我认为把完整的cmd行放在根crontab中会更好,更安全。 至少crontab编辑被限制(可读)给已经知道密码的人。所以不用担心用纯文本显示它……

如果需要一个简单的mysqldump…只需放置一个bash脚本,接受cred作为参数,并在里面执行所有设施…

bas文件在simple

#!/bin/bash
mysqldump -u$1 -p$2 yourdbname > /your/path/save.sql

在Crontab中:

0 0 * * * bash /path/to/above/bash/file.sh root secretpwd 2>&1 /var/log/mycustomMysqlDump.log

因为你使用的是Ubuntu,你所需要做的只是在你的主目录中添加一个文件,它将禁用mysqldump密码提示。这是通过创建文件~/.my.cnf来完成的(权限需要是600)。

将其添加到.my.cnf文件中

[mysqldump]
user=mysqluser
password=secret

这让您可以作为需要密码的MySQL用户连接,而无需实际输入密码。甚至不需要-p或——密码。

非常方便的脚本mysql和mysqldump命令。

实现这一目标的步骤可以在此链接中找到。

或者,您可以使用以下命令:

mysqldump -u [user name] -p[password] [database name] > [dump file]

但是请注意,它本质上是不安全的,因为在转储运行时,系统上的任何其他用户都可以使用简单的ps ax命令查看整个命令(包括密码)。

我有以下内容。

/etc/mysqlpwd

[mysql]
user=root
password=password

使用以下别名。

alias 'mysql -p'='mysql --defaults-extra-file=/etc/mysqlpwd'

要做恢复,我简单地使用:

mysql -p [database] [file.sql]

补充@Frankline的回答:

为了在配置文件中使用密码,命令中必须排除-p选项。

正确的: Mysqldump -u my_username my_db > my_db.sql

错误的: Mysqldump -u my_username -p my_db > my_db.sql



.my.cnf可以省略用户名。

[mysqldump]
password=my_password

如果你的.my.cnf文件不在默认位置,mysqldump也看不到它,使用——defaults-file指定它。

Mysqldump——defaults-file=/path-to-file/.my.cnf -u my_username my_db > my_db.sql . Mysqldump

——password="" 在5.1.51上运行对我有用

mysqldump -h localhost -u <user> --password="<password>"