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.cnfmysql 파일에 비밀번호를 구성하여 매번 비밀번호를 입력할 필요가 없도록 하는 것입니다.

[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에 자동으로 로그인하는 방법은 무엇입니까?

관련 정보