Bash

如何在腳本變數上使用兩個字的密碼?

  • February 8, 2017

我正在嘗試建構一個腳本來自動化現有數據庫的備份過程。

我遇到的問題是將mysqldump兩個單詞用空格分隔的數據庫密碼傳遞給命令(見下文)。

# database credentials
DATABASEHOST="localhost"
DATABASEUSER="username"
DATABASEPASSWORD="Compound Password"
DATABASESCHEMA="schema"

# Local directory of mysqldump file
LOCALDIR=/home/user/db-bkp

#--- end config

mysqldump --host=$DATABASEHOST --user=$DATABASEUSER --password=$DATABASEPASSWORD $DATABASESCHEMA > $LOCALDIR/`date +%Y%m%d`_bkp_$DATABASESCHEMA.sql

當我執行腳本時,相關的mysqldump相關消息是:

mysqldump: Got error: 1045: "Access denied for user 'username'@'localhost' (using password: YES)" when trying to connect

我在這裡做錯了什麼以及如何解決?

引用你的變數:

mysqldump --host="$DATABASEHOST" \
         --user="$DATABASEUSER" \
         --password="$DATABASEPASSWORD" \
         --database="$DATABASESCHEMA" \
 > "$LOCALDIR"/"$(date +%Y%m%d)_bkp_$DATABASESCHEMA.sql"

另請參閱:忘記在 bash/POSIX shell 中引用變數的安全隱患

引用自:https://unix.stackexchange.com/questions/343427