如何在脚本变量上使用两个单词的密码?

如何在脚本变量上使用两个单词的密码?

我正在尝试构建一个脚本来自动执行现有数据库的备份过程。

我遇到的问题是将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

我在这里做错了什么以及如何解决它?

答案1

引用你的变量:

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

也可以看看:忘记在 bash/POSIX shell 中引用变量的安全隐患

相关内容