mysqldump由cron和密码安全启动

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

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

一个cron每晚都会启动它,并将结果传给另一台服务器。 mypassword在我的脚本中显示清楚,每个人都可以看到它的适当的权利。 我也被告知/ proc问题(cmd运行可以看到)。

MySQL文档说:

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

我还没有find这个神奇的7.6节。

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

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

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

 [client] password=your_pass 

为了保证密码的安全,文件不应该被任何人访问,除了你自己。 要确保这一点,请将文件访问模式设置为400或600.例如:

 shell> chmod 600 .my.cnf 

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

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

–defaults-extra-file用于告诉程序除了读取标准选项文件以外,还读取一个特定的选项文件。

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

检查出保持密码安全的一个很好的答案。 您可以将密码存储在my.cnf文件中,更改该文件的权限以确保密码安全。

你也可以查看这个页面的最后一个评论:

MYSQL_PWD =“tinkerbell”mysqldump -ubackup –all-databases> dump.sql

这里的所有答案都是分段的,所以共享一个完整的命令,它将完成必要的操作,如果数据库很大,必须使用这个命令。 --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; 

注意:答案是加上Avibodha和Sahil的答案,他们已经提出了观点。 我只是把他们的答案放在单个代码中, important measure should be taken at time of backing up live database

以下方法适用于Windows机器,如果您安装了2个MySQL版本,并且您不确定在运行mysqldump时使用了哪个my.ini,这也有助于:

1,C:\ ProgramData \ MySQL \ MySQL Server 5.6 \ my.ini,罚款[客户端],将其replace为:

 [client] user=my_user password=my_password 

2,使用这个命令:

C:\ Program Files \ MySQL Server 5.6 \ bin> mysqldump –default-extra-file =“C:\ ProgramData \ MySQL \ MySQL Server 5.6 \ my.ini”-u my_user db_to_export> db_to_export.sql

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

更好的select是使用mysql_config_editor创build名为mysqldump的encryptionloginpath。 根据MySQL文档 :

mysql_config_editor对.mylogin.cnf文件进行encryption,使其不能被读为明文,并且客户端程序解密时的内容仅在内存中使用。 通过这种方式,密码可以以非明文格式存储在文件中,以后可以不必在命令行或环境variables中公开。

以下命令将创build您的mysqldumploginpath:

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

系统会提示您input密码,您创build的loginpath将以encryption格式存储。 除非您使用--login-path命令行选项指定不同的loginpath,否则mysqldump会在将来调用它时自动使用此loginpath。

以下是在创buildencryptionloginpath后如何调用mysqldump

 mysqldump database_name > output_file