2011-07-28 104 views
42

推出使用我寫了一個腳本來備份我的MySQL數據庫。 mypassword在我的腳本中顯示清楚,每個人都可以看到它與適當的權利。我也被告知關於/ proc問題(可以看到cmd運行的地方)。用mysqldump由cron和密碼安全

MySQL文檔說:

指定命令行中輸入密碼應被認爲是不安全的。請參閱第7.6節「確保您的密碼安全」。

我還沒有在任何地方發現這個神奇的7.6節。

什麼是處理自動mysqldump和密碼安全性的好習慣?

+1

http://bugs.mysql.com/bug.php?id=13058閱讀張貼到bug報告的答案。它導致將密碼添加爲選項文件:http://dev.mysql.com/doc/refman/5.5/en/option-files.html。不知道這是否會有所幫助。 –

+1

更多信息:http://www.webhostingtalk.com/showpost.php?s=044cd482ca45a726660c48eff2dfb704&p=5066589&postcount=10 –

回答

48

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

將您的密碼存儲在選項文件中。例如,在Unix上你可以列出在.my.cnf文件的[客戶]部分您的密碼在你的主目錄:

[client] 
password=your_pass 

爲了保持密碼安全,文件不應該給任何人訪問,但你自己。爲了確保這一點,設置文件訪問模式400或600。例如:

shell> chmod 600 .my.cnf 

到命令行命名包含密碼的特定選項文件,使用--defaults-file=file_name選項,其中file_name是全路徑名到文件。

+0

非常感謝你的回答!正是我需要的。 – localshred

+0

嘗試此操作。一旦logrotate再次運行,我會在幾天內知道它是否符合我的需求。 –

+0

糟糕的是,之後MySQL不會再問任何密碼。想要的只是在運行_mysqldump_時密碼不會暴露。 – ajaaskel

2

檢查出Keeping Passwords Secure爲一個很好的答案。您可以將密碼存儲在my.cnf文件中,更改該文件的權限以確保密碼安全。

您還可以檢查過此頁面上的最後一個註釋:

MYSQL_PWD = 「叮噹」 的mysqldump -ubackup - 全數據庫> dump.sql

22

添加到薩赫勒的回答以上,使用--defaults-額外文件

--defaults-額外文件 是用來告訴一個程序來讀取一個特定的選項文件除了標準選項文件。

而讀取--defaults-file而不是默認的my.cnf文件。

+0

偉大的,有用的! – iwalktheline

+5

必須是mysqldump的* first *參數,格式爲'--defaults-extra-file = my-file'。帶了我幾次迭代最後閱讀文檔... – semperos

+0

這將按預期完成工作。 – ajaaskel

1

下面的方法對我的作品在Windows機器上,如果安裝了2個版本的MySQL,你不知道,當你運行mysqldump的my.ini文件被使用,這也將幫助:

1 ,C:\ ProgramData \ MySQL \ MySQL Server 5.6 \ my。INI,精細[客戶],它替換到:

[client] 
user=my_user 
password=my_password 

2,使用這個命令:

C:\ Program Files文件\ MySQL服務器5.6 \ BIN> mysqldump的--default-EXTRA-file =」文件C:\ ProgramData \ MySQL的\ MySQL服務器5.6 \ my.ini的」 -u my_user db_to_export> db_to_export.sql

2

所有答案在這裏是件這麼共享一個完整的命令將做必要的,如果必須使用數據庫都很重,--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

1

接受的答案將密碼存儲在純文本文件中,任何人都可以通過管理(root)訪問權限讀取該密碼。如果您的數據庫處於共享主機環境中,這是不可取的。

更好的選擇是使用mysql_config_editor來創建名爲mysqldump的加密登錄路徑。按照MySQL documentation

mysql_config_editor加密.mylogin.cnf文件,所以它不能被解讀爲明文,並且當客戶端程序解密的內容僅用於存儲。通過這種方式,密碼可以以非明文格式存儲在文件中,以後可以不必在命令行或環境變量中公開。

以下命令將創建mysqldump登錄路徑:

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

你會被提示輸入您的密碼,您創建的登錄路徑將存儲在加密格式。除非您使用--login-path命令行選項指定不同的登錄路徑,否則每當您將來調用它時,mysqldump都會自動使用此登錄路徑。

這裏是你將如何創建一個加密的登錄路徑後調用mysqldump

mysqldump database_name > output_file