여러 개의 MySQL 쿼리를 실행하고 이를 지정된 파일에 저장하고 싶습니다. 쿼리는 bash 스크립트에 저장됩니다. queries.sh
예:
cat queries.sh
mysql -u <user> -p <DBname> -e "select Col1 from Table1 where Condition;" > /home/<user>/queries/Col1Table1Cond
mysql -u <user> -p <DBname> -e "select Col5 from Table2 where Condition;" > /home/<user>/queries/Col5Table2Cond
모든 쿼리에 비밀번호를 입력해야 하므로 스크립트 실행만으로는 충분하지 않으며 <user>
이는 스크립트 흐름에 해를 끼칩니다.
답변1
이 시도 ;)
user="jonnDoe"
dbname="customers"
password="VerySecret"
mysql -u $user -D $dbname -p $password -e "select Col1 from Table1 where Condition;" > /home/$user/queries/Col1Table1Cond
mysql -u $user -D $dbname -p $password -e "select Col5 from Table2 where Condition;" > /home/$user/queries/Col5Table2Cond
더 나은 접근 방식은 /etc/mysql/my.cnf
mysql 파일에 비밀번호를 구성하여 매번 비밀번호를 입력할 필요가 없도록 하는 것입니다.
[client]
password = your_password
후자의 경우 이전 스크립트에서 비밀번호 관련 내용을 모두 제거하세요.
답변2
이를 달성하는 데는 일반적으로 몇 가지 다른 방법이 있습니다.
비밀번호만 포함된 외부 파일에 저장하세요.
$cat password.txt
Password
$cat queries.sh
mysql -u <user> -p$(cat password.txt) <rest of the command>
다른 쉘 스크립트에 저장하십시오.
$cat settings.sh
PASSWORD=Password
$cat queries.sh
source settings.sh
mysql -u <user> -p"$PASSWORD" <rest of the command>
PASSWORD라는 환경 변수에 저장합니다.
$cat queries.sh
mysql -u <user> -p"$PASSWORD" <rest of the command>