Mysqldump由cron和密码安全发起

khe*_*aud 48 mysql security mysqldump

我写了一个脚本来备份我的MySQL数据库:

mysqldump --opt --all-databases -u user -pmypassword > myDump.sql
Run Code Online (Sandbox Code Playgroud)

cron每晚都会启动它并将结果scp到另一台服务器. mypassword在我的脚本中清晰显示,每个人都可以使用适当的权限查看它.我也被告知/ proc问题(可以看到cmd运行的地方).

MySQL文档说:

在命令行上指定密码应该被认为是不安全的.请参见第7.6节"保持密码安全".

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

处理自动mysqldump和密码安全性的好习惯是什么?

Sah*_*hoo 58

引用MySQL文档(http://dev.mysql.com/doc/refman/5.1/en/password-security-user.html):

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

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

为了确保密码安全,除了您自己之外,任何人都无法访问该文件.要确保这一点,请将文件访问模式设置为400或600.例如:

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

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


tro*_*man 23

要添加Sahil上面的答案,请使用--defaults-extra-file

--defaults-extra-file用于告诉程序除标准选项文件外还读取单个特定选项文件.

而 - 读取--defaults文件而不是默认的my.cnf文件.

  • 必须是mysqldump的*first*参数,格式为`--defaults-extra-file = my-file`.我花了几个迭代来最后阅读文档...... (8认同)

ble*_*nzo 7

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

更好的选择是使用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
Run Code Online (Sandbox Code Playgroud)

系统将提示您输入密码,并且您创建的登录路径将以加密格式存储。mysqldump除非以后使用--login-path命令行选项指定其他登录路径,否则以后每次调用它时,它将自动使用该登录路径。

这是mysqldump创建加密的登录路径后如何调用:

mysqldump database_name > output_file
Run Code Online (Sandbox Code Playgroud)


Kul*_*ngi 5

这里的所有答案都是分段的,因此共享一个完整的命令,该命令将执行所需的操作,并且如果数据库很大,则必须使用该命令--single-transaction并且--lock-tables在这里非常重要

mysqldump --defaults-extra-file=/home/dangi/.my.cnf -u root --single-transaction --quick --lock-tables=false --all-databases (or) DATABASE | gzip > OUTPUT.gz;
Run Code Online (Sandbox Code Playgroud)

注:答案是在无明和无量的答案中添加的,他们已经指出了这一点。我只是将他们的答案放在一段代码中important measure should be taken at time of backing up live database