Bash 파일의 MySQL 쿼리

Bash 파일의 MySQL 쿼리

여러 개의 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>

또한 참조하세요쉘 스크립트에서 mysql에 자동 로그인하는 방법은 무엇입니까?

관련 정보