>

여러 개의 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
    
    
    더 좋은 방법은 mysql /etc/mysql/my.cnf 를 구성하는 것입니다  이 방법으로 내부에 비밀번호가있는 파일을 입력하면 매번 입력 할 필요가 없습니다.
    [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>
    
    
    패스워드라는 환경 변수에 저장하십시오 :
    $cat queries.sh
    mysql -u <user> -p"$PASSWORD" <rest of the command>
    
    

    또한 셸 스크립트에서 mysql을 자동으로 로그인하는 방법을 참조하십시오

  • 이전 linux - bash에서 현재 사용자/암호를 보려면 어떻게합니까?
  • 다음 linux - 이 이미지 백업 형식을 식별하십시오