Mysqldump由cron启动和密码安全性

8 浏览
0 Comments

Mysqldump由cron启动和密码安全性

我编写了一个脚本来备份我的MySQL数据库,使用的命令是:

mysqldump --opt --all-databases -u user -pmypassword > myDump.sql

一个cron定时任务每晚会启动它,并将结果通过scp发送到另一台服务器。

mypassword明文出现在我的脚本中,任何有适当权限的人都可以看到它。我还听说过/proc问题(可以看到运行的命令)。

MySQL文档中写道:

在命令行上指定密码应被视为不安全的。请参阅第7.6节,“保持密码安全”。

我在任何地方都没有找到这个神奇的第7.6节。

处理自动化mysqldump和密码安全的最佳实践是什么?

0
0 Comments

Mysqldump由cron启动并且密码安全性的问题是由于使用默认的my.cnf文件而导致的。解决方法是使用--defaults-extra-file选项来告诉程序读取指定的选项文件。该选项文件必须作为mysqldump的第一个参数,并且格式为--defaults-extra-file=my-file。这样就能达到预期的效果了。

0
0 Comments

问题出现的原因是因为在使用mysqldump命令时,如果密码直接写在命令中,会导致密码暴露的风险。解决方法是将密码存储在一个选项文件中,并设置该文件的访问权限,以确保只有自己能够访问。

根据MySQL文档的建议,可以将密码存储在一个选项文件中,例如在Unix系统中的用户目录下的.my.cnf文件的[client]部分中添加以下内容:

[client]

password=your_pass

为了保证密码的安全性,该文件的访问权限应该设置为400或600,可以使用以下命令进行设置:

shell> chmod 600 .my.cnf

如果想要在命令行中指定包含密码的特定选项文件,可以使用`--defaults-file=file_name`选项,其中`file_name`是文件的完整路径名。

尝试上述方法后,需要等待几天以验证是否满足需求,一旦logrotate再次运行,就能知道是否成功。

不足之处是,这种方法会导致MySQL在执行命令后不再要求输入密码。实际上,我们只是希望在运行mysqldump命令时不暴露密码。

当使用`--defaults-file=file_name`选项时,必须从命令中删除`-p`标志。

这种方法将密码存储在明文文件中。更安全的方法是使用`mysql_config_editor`创建一个加密的登录路径。关于如何使用该方法,我在另一个答案中已经解释过了。

0
0 Comments

在这个问题中,出现了使用cron启动Mysqldump时存在的密码安全问题。解决方法是使用mysql_config_editor创建一个加密的登录路径,以便在不暴露密码的情况下使用mysqldump。

在问题中,接受的答案将密码存储在一个明文文件中,任何具有管理员(root)访问权限的人都可以读取该文件。如果您的数据库在共享托管环境中,这是不可取的。

更好的选择是使用mysql_config_editor创建一个名为mysqldump的加密登录路径。根据MySQL文档的说明,mysql_config_editor会加密.mylogin.cnf文件,以防止以明文形式读取,并且在客户端程序解密时,仅在内存中使用其内容。这样,密码可以以非明文格式存储在文件中,并在以后使用时无需在命令行或环境变量中公开。

以下命令将创建您的mysqldump登录路径:

mysql_config_editor set --login-path=mysqldump --host=your_hostname --user=your_username --password

您将被提示输入密码,并且您创建的登录路径将以加密格式存储。mysqldump在将来调用时将自动使用此登录路径,除非您使用--login-path命令行选项指定了一个不同的登录路径。

在创建加密登录路径后,您可以如下调用mysqldump:

mysqldump database_name > output_file

如果您需要备份具有不同用户名和密码的两个数据库,您可以使用另一个--login-path。例如,mysql_config_editor set --login_path=other_account,然后在调用mysqldump时,只需调用另一个登录路径:mysqldump --login_path=other_account database_name > output_file

该解决方案可避免将密码以明文形式存储在文件中,提高了密码安全性。

0