programing

명령줄에서 ssh를 통해 원격 시스템에서 MySQL 쿼리 실행

css3 2023. 9. 7. 21:58

명령줄에서 ssh를 통해 원격 시스템에서 MySQL 쿼리 실행

다음 명령을 사용하여 원격 컴퓨터에서 MySQL 쿼리를 실행하려고 합니다.

ssh user@192.168.2.26 "mysql -uroot -proot -e \"use test";""

저는 그 데이터베이스를 사용할 수 없습니다.

작업 명령을 제안해 주십시오.

시도해 보기:

mysql -h host -u root -proot -e "show databases;";

시도해 보기:

ssh root@host "mysql database -e 'query to run on table_name; more queries to run;'"

동일한 작업을 수행할 수 있습니다.user@host해당 사용자가 일반적으로 mysql을 시작하는 것은 고사하고 SQL 쿼리를 실행할 수 있는 권한을 가진 경우.사용.-e와 같음--execute, 뒤에 따옴표를 넣거나(단일 또는 이중) 입력한 후 종료합니다.표준 출력 형식은 다음을 사용하는 것과 동일합니다.--batch.

MySql에는 데이터베이스를 포함하는 특별한 명령줄 구문이 있는 것 같습니다.

mysql -u user -p -e 'SQL 쿼리' 데이터베이스

이 문서는 좀 오래된 것 같은데 제가 작업하게 되었습니다.

http://www.cyberciti.biz/faq/run-sql-query-directly-on-the-command-line/

ssh를 사용한 최종 작업 명령:

ssh user@host "ssh -u user -e 'show tables;' 데이터베이스 이름"

이는 결국 저에게 bash 스크립트로 효과가 있었습니다.

query='USE [database]; SELECT ...'   
mysql='mysql -u [username] -p[password] -e '"'""$query""'"
ssh [username]@[server] -t "$mysql"

암호를 더 안전하게 만들려면 암호를 안전하지 않은 곳에 저장하는 대신 암호에 대한 프롬프트를 추가합니다.

몇 번의 테스트(기본적으로 @King-Wzrd와 동일한 답변) 후에 효과가 있었습니다.

ssh -t kom "mysql -uroot -p -e 'show databases;'"
ssh -t kom "mysql -uroot -p < /home/ling/websites/jin_test/.deploy/tmp.sql"

"꼼수"는 명령어 주변의 인용문이었습니다.

-t 옵션을 사용하면 원격 셸을 통해 대화식으로 암호를 확인할 수 있습니다.

여기서의 kom은 내 ~/.ssh/config 파일에 정의된 ssh 구성 식별자일 뿐입니다(자세한 내용은 여기: https://www.cyberciti.biz/faq/create-ssh-config-file-on-linux-unix/) 참조).

홈스테드 VM 내의 MySQL에 대해 호스트 환경에서 이를 실행하면 좋은 결과를 얻을 수 있었습니다.VM 내에서 루트 암호를 먼저 설정해야 작동할 수 있었습니다.

ssh vagrant@192.168.10.10 mysql -h localhost -u root -p -e "'SELECT * FROM user;' mysql";

언급URL : https://stackoverflow.com/questions/17544954/run-mysql-query-on-remote-machine-through-ssh-in-command-line