developer tip

bash에서 mysql 명령을 실행하는 방법은 무엇입니까?

optionbox 2021. 1. 7. 07:54
반응형

bash에서 mysql 명령을 실행하는 방법은 무엇입니까?


다음 코드는 명령 줄에서 작동합니다.

mysql --user='myusername' --password='mypassword' --database='mydatabase' --execute='DROP DATABASE myusername; 
CREATE DATABASE mydatabase;'

그러나 실행시 bash 파일에서 작동하지 않습니다.

#!/bin/bash
user=myusername
password=mypassword
database=mydatabase

mysql --user='$user' --password='$password' --database='$database' --execute='DROP DATABASE $user; CREATE DATABASE $database;'

다음과 같은 오류가 발생합니다.

오류 1045 (28000) : '$ user'@ 'localhost'사용자에 대한 액세스가 거부되었습니다 (암호 사용 : YES).

bash 파일을 명령 줄로 실행하는 방법은 무엇입니까?


BASH 변수를 사용하는 동안 큰 따옴표를 사용하십시오.

mysql --user="$user" --password="$password" --database="$database" --execute="DROP DATABASE $user; CREATE DATABASE $database;"

BASH는 작은 따옴표로 된 변수를 확장하지 않습니다.


이것은 $ user 및 $ password가 작은 따옴표 밖에있을 때 큰 따옴표로 작동했습니다. 작은 따옴표 문 안에있는 작은 따옴표.

mysql --user="$user" --password="$password" --database="$user" --execute='DROP DATABASE '$user'; CREATE DATABASE '$user';'

속성 파일에서 데이터를 읽고 쉘 스크립트에서 mysql 스크립트를 실행하는 쉘 스크립트를 작성했습니다. 이것을 공유하면 다른 사람들에게 도움이 될 수 있습니다.

#!/bin/bash
    PROPERTY_FILE=filename.properties

    function getProperty {
       PROP_KEY=$1
       PROP_VALUE=`cat $PROPERTY_FILE | grep "$PROP_KEY" | cut -d'=' -f2`
       echo $PROP_VALUE
    }

    echo "# Reading property from $PROPERTY_FILE"
    DB_USER=$(getProperty "db.username")
    DB_PASS=$(getProperty "db.password")
    ROOT_LOC=$(getProperty "root.location")
    echo $DB_USER
    echo $DB_PASS
    echo $ROOT_LOC
    echo "Writing on DB ... "
    mysql -u$DB_USER -p$DB_PASS dbname<<EOFMYSQL

    update tablename set tablename.value_ = "$ROOT_LOC" where tablename.name_="Root directory location";
    EOFMYSQL
    echo "Writing root location($ROOT_LOC) is done ... "
    counter=`mysql -u${DB_USER} -p${DB_PASS} dbname -e "select count(*) from tablename where tablename.name_='Root directory location' and tablename.value_ = '$ROOT_LOC';" | grep -v "count"`;

    if [ "$counter" = "1" ]
    then
    echo "ROOT location updated"
    fi

참조 URL : https://stackoverflow.com/questions/20033648/how-to-run-mysql-command-on-bash

반응형