터미널에서 실행할 수있는 배포 스크립트를 만들고 저장소에서 자동으로 사이트를 배포하려고합니다. 내가 발견 한 단계는 다음과 같습니다쉘 스크립트에서 MySQL 명령을 실행 하시겠습니까?
- 연결을 원격 서버에 SSH를 통해
- 원격 저장소에서 사이트의 최신 버전을 가져 오기
- 실행되는 SQL 패치까지
- 깨끗하고 종료
쉘 파일에 SSH 연결과 git pull
명령을 넣었지만, 내가 갇혀있는 것은 MySQL과 (대화 형?) 셸 자체입니다. 그래서 내 파일에 내가 가진 : 당신이 볼 수 있듯이, 나는 데이터베이스에 연결,하지만 어떤 MySQL의 문을 실행하는 방법을 잘 모르겠어요
#!/bin/bash
# connect to remote server via SSH
ssh [email protected]$SSH_HOST
# update code via Git
git pull origin $GIT_BRANCH
# connect to the database
mysql --user $MYSQL_USER --password=$MYSQL_PASSWORD --database=$MYSQL_DBNAME
# run any database patches
# disconnect from the database
# TODO
exit 0
.
현재 SQL 패치가 포함 된 디렉토리가 있습니다. 그래서 1.sql, 2.sql, 등등. 그런 다음 데이터베이스에 마지막으로 실행될 패치를 기록하는 표가 있습니다. 따라서 SELECT
문을 수행하고 실행될 마지막 패치를 읽은 다음 필요한 패치를 실행해야합니다.
- 은 어떻게 쉘 스크립트에서
mysql
프롬프트로SELECT
성명을 발표합니까? - 그러면 정상적인 흐름은 무엇입니까? 연결을 닫고 다시 열어서 패치 파일을 입력으로 보냅니 까? 또는 하나의 연결에서 필요한 모든 패치를 실행 하시겠습니까?
- 나는 마지막 패치 파일을 검사 할 것이고 그 사이에 어떤 패치라도
do
루프를 수행한다고 가정합니까?
도움말 여기에 크게 감사하겠습니다.
은'ssh' 명령은 또한 당신에게 대화 형 쉘을 제공 할 것입니다. 명령을 SSH로 파이프하거나 원격 컴퓨터에서 특정 파일을 실행하도록 명령해야합니다. –
이것은 아마도 당신에게 좋은 대답 일 것입니다 : [쉘 스크립트에서 Mysql 명령을 실행하는 방법?] (http://stackoverflow.com/questions/8055694/how-to-execute-mysql-command-from-a-shell- script) * 다른 stackoverflow 질문 –