在 cron 作业中运行 mysql dump 而不暴露密码

sly*_*cat 13 security cron

我想跑

mysqldump -u aUser -p P4SSw0rd --all-databases > backup.sql
Run Code Online (Sandbox Code Playgroud)

在 cron 工作中。我怎样才能安全地这样做?

我知道我可以将命令放在那里,但是任何有权访问机器的人都会通过 crontab 立即看到它。有没有更好的方法来做到这一点?

Dan*_*son 15

man mysqldump:见6.1.2.1。MySQL 参考手册中的最终用户密码安全指南。

选项文件是最安全的选择,尤其是根据上述参考资料。在 crontab 中以纯文本形式提供它并不好,尤其是因为默认情况下进程命令行ps对其他用户可见。这同样适用于参考中解释的环境变量。

MySQL参考手册的相关部分:

将您的密码存储在选项文件中。例如,在 Unix 上,您可以在主目录[client]中的.my.cnf文件部分列出您的密码:

[client]
password=your_pass
Run Code Online (Sandbox Code Playgroud)

为了确保密码安全,除了您自己之外,任何人都不应访问该文件。为确保这一点,请将文件访问模式设置为400600。例如:

shell> chmod 600 .my.cnf
Run Code Online (Sandbox Code Playgroud)

要从命令行命名包含密码的特定选项文件,请使用该--defaults-file=file_name选项,其中file_name是文件的完整路径名。例如:

shell> mysql --defaults-file=/home/francis/mysql-opts
Run Code Online (Sandbox Code Playgroud)

4.2.3.3,“使用选项文件”,更详细地讨论了选项文件。

另请参阅/sf/ask/750764661/