2012-03-30 8 views
5

BASH에서 스크립트를 작성하고 싶은 CentOS 서버가 있습니다. 일부 MySQL의 문 ssh를 통해 서버에 로그 및 실행 - - 내가 파일 복사가 쉽게 그들SSH를 통한 BASH의 MySQL 스크립팅

을 필요로하는 곳에 필요 파일을 복사 :

는 로컬로 스크립트를 실행합니다. 나는 그걸 할 수있어.

하지만 어떻게 SSH 포트를 통해 MySQL 서버에 연결하고 명령문을 실행할 수 있습니까? 나는 내가 연결 부분에 붙어있는 것 같아. 변수 및 일괄 처리에서 빌드 할 수있는 문을 실행합니다.

내 노트북에서이 서버까지 SSH pub/priv 키 쌍이 있습니다.

어떤 도움이 필요합니까?

+0

이 무엇인가를 너 찾고있어? http://www.wallpaperama.com/forums/_zwxwzy.html – mikevoermans

답변

5

원격 서버에서 mysql을 실행하려면 ssh 만 사용하면됩니다. 예 :

ssh [email protected] 'mysql -uimauser -p imadb -e "select * from table"'.

따옴표 안에있는 모든 내용은 ssh에서 원격으로 실행됩니다.

9
당신은 ssh를 마지막 인자로, 원격 시스템에서 실행할 명령을 지정할 수 있습니다

:

ssh [email protected] 'mysql -u user ...' 
이 가진 문제는 그것이 " '여러 가지가에서 탈출을 처리하는 번거 로움이 될 것입니다

.

ssh -L 12341:127.0.0.1:3306 [email protected] & 

이 로컬 12341 포트를 연결하는 것입니다 t : 당신이 연결할 때 MySQL의 명령 (들)

더 좋은 방법은, 내 의견으로는, 원격 시스템에 SSH 터널을 열 수 있습니다 o 원격 머신의 3306 (mysqld) 포트. 연결이 완료되면, 당신은 같은 로컬 컴퓨터에서 연결할 수 : 그래서 당신이 파일로 SQL 문을 배치 할 수 있습니다

mysql -h 127.0.0.1 -p 12341 

, 고양이 그것은 MySQL의에 :

cat commands | mysql -h 127.0.0.1 -p 12341 

돈 ' 끝나면 SSH 연결을 종료하는 것을 잊지 마십시오.

터널링은 리모트 서버가 PermitTunnel "yes"이 sshd_config에 있어야 함을주의하십시오.

5
당신은 @WishCow이 말을 할 수 또는 당신은 .sql 파일의 모든 MySQL의 문을 넣어 서버에이 파일을 복사 한 다음 이러한 진술이 같은 실행 mysql을 호출 할 수 있습니다

:

echo "show databases;" > test.sql 
echo "use some_database;" >> test.sql 
echo "show tables;" >> test.sql 
scp test.sql [email protected]: 
ssh [email protected] 'mysql -u mysql-user -pmysql-pass < test.sql'