2017-02-14 46 views
2

我將密碼存儲在變量$ db_pwd中,我想將它傳遞給shell腳本中的mysql_config_editor。我無法使用配置文件或db_pwd環境變量。使用shell中的變量將密碼傳遞給mysql_config_editor

我這樣做

mysql_config_editor set --login-path=local --host=localhost --user=username --password 

https://stackoverflow.com/a/20854048/6487831)。

它所要求的是輸入密碼「Enter Password」,但我希望使用變量提供密碼。

我嘗試這樣做:

mysql_config_editor set --login-path=local --host=localhost --user=username --password $db_pwd 

mysql_config_editor set --login-path=local --host=localhost --user=username --password | echo $db_pwd 

echo "$db_pwd" | mysql_config_editor set --login-path=local --host=localhost --user=username --password 

  • expect。但是,如果出現警告,例如「此路徑已存在,重寫(y/n)」,則會導致錯誤。即使在我將它用作第一個參數時,它們仍會給我發現變量未找到錯誤。是選項文件與MySQL配置編輯器兼容嗎?

沒有辦法做到這一點?或者我應該恢復使用mysql代替mysql_config_editor的?

+0

看到的是https:// stackoverflow.com/a/22513843/1497139 –

回答

0

--password參數設計明確地避免在命令傳遞一個密碼因爲這被認爲是不安全的。

話雖這麼說,你可以嘗試反正密碼喂mysql_config_editor

echo "$db_pwd" | mysql_config_editor set --login-path=local --host=localhost --user=username --password 

(如果mysql_config_editor從當前的終端,而不是在標準獲得輸入堅稱這可能無法正常工作;如果是這種情況,你沒有辦法從變量提供密碼)。

作爲您鏈接到州的答案,您可以直接使用mysql來提供密碼。使用mysql_config_editor是爲了以加密的形式在.mylogin.cnf中存儲密碼(即,您從終端提供一次密碼,然後將其加密並保存在配置文件中,並且mysql可以從那裏使用它)。

參考:https://dev.mysql.com/doc/refman/5.7/en/mysql-config-editor.html

更新:您可以欺騙mysql_config_editor以爲它是從一個交互式終端閱讀,使用unbuffer utility

echo "$db_pwd" | unbuffer -p mysql_config_editor set --login-path=local --host=localhost --user=username --password 
+0

是的,它不起作用。我正在用我嘗試過的其他方法編輯這個問題。 –