반응형
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;'
다음의 에러가 표시됩니다.
ERROR 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
반응형
'programing' 카테고리의 다른 글
무결성 제약 조건 위반: 1452 하위 행을 추가하거나 업데이트할 수 없습니다. (0) | 2022.11.10 |
---|---|
MariaDB on Debian:구문 오류:unix 소켓 인증을 패스워드 베이스로 되돌리는 방법 (0) | 2022.11.10 |
빈 결과 세트를 선택하려면 어떻게 해야 합니까? (0) | 2022.11.10 |
jQuery를 사용하여 동적 HTML 요소에 이벤트를 첨부하려면 어떻게 해야 합니까? (0) | 2022.11.10 |
MySql DateTime 스탬프를 JavaScript의 Date 형식으로 변환합니다. (0) | 2022.11.01 |