我發現一種方法是mysqldump通過使用從 PHP運行,proc_open()這樣我就可以避免在命令中直接使用密碼字串。問題是 PHP 腳本是從 shell 呼叫的,但我仍然收到Enter password:提示。
$cmd = "mysqldump -u ".$db_user." -p -h ".$db_host." ".$db_name." > /files/database-backups/db-backup.sql";
$desc = [
0 => ["pipe", "r"]
];
$p = proc_open($cmd, $desc, $pipes);
fwrite($pipes[0], $db_pass);
fclose($pipes[0]);
proc_close($p);
我需要它來獲取密碼并在不需要任何外部輸入的情況下完成。是否可以?如果是的話,我在這里做錯了什么?
如果有更好的選擇是什么?我需要從 PHP 讀取資料庫詳細資訊,因此帶有硬編碼詳細資訊的單獨 shell 腳本將不起作用。
uj5u.com熱心網友回復:
我一知道,您就可以將密碼添加到命令中。
要糾正此問題,請嘗試使用--password=YOUR_PASSWORD或-p=YOUR_PASSWORD。
uj5u.com熱心網友回復:
在 bash 腳本檔案中,您可以使用
mysql -u user -p`cat /folder/user-pwd.txt` dbname <<EOFSCRIPT
把你所有的 mysql 命令放在下面,然后是
EOFSCRIPT
通過將密碼保存在安全的地方(可能在 /usr/local/bin 或 /etc/yourfolder/ 或其他下)。這樣ps aux就不能暴露密碼。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/376540.html
