스크립트 변수에 두 단어 비밀번호를 사용하는 방법은 무엇입니까?

스크립트 변수에 두 단어 비밀번호를 사용하는 방법은 무엇입니까?

기존 데이터베이스의 백업 프로세스를 자동화하는 스크립트를 작성하려고 합니다.

내가 겪고 있는 문제는 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 쉘에서 변수를 인용하는 것을 잊어버리는 보안 위험

관련 정보