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]部分列出您的密码:
Run Code Online (Sandbox Code Playgroud)[client] password=your_pass
为了确保密码安全,除了您自己之外,任何人都无法访问该文件.要确保这一点,请将文件访问模式设置为400或600.例如:
Run Code Online (Sandbox Code Playgroud)shell> chmod 600 .my.cnf
要从命令行命名包含密码的特定选项文件,请使用
--defaults-file=file_name
选项,其中file_name
是文件的完整路径名.
tro*_*man 23
要添加Sahil上面的答案,请使用--defaults-extra-file
--defaults-extra-file用于告诉程序除标准选项文件外还读取单个特定选项文件.
而 - 读取--defaults文件而不是默认的my.cnf文件.
接受的答案将密码存储在纯文本文件中,任何具有管理(根)访问权限的人都可以读取该密码。如果您的数据库位于共享托管环境中,则这是不可取的。
更好的选择是使用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)
这里的所有答案都是分段的,因此共享一个完整的命令,该命令将执行所需的操作,并且如果数据库很大,则必须使用该命令,--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
归档时间: |
|
查看次数: |
22681 次 |
最近记录: |