[英]Remote SSH command with MySQL won't work, but the statement itself does
我想實現一些MySQL命令在遠程服務器上運行,以從數據庫中刪除所有表。 因此,我使用bash腳本連接SSH(SSH使用公共密鑰登錄)並運行mysql命令:
#!/bin/bash
ssh user@example.com "mysql -uadmin -p\$(cat /etc/psa/.psa.shadow) exdb<<EOFMYSQL
SET FOREIGN_KEY_CHECKS = 0;
SET @tables = NULL;
SELECT GROUP_CONCAT(table_schema, '.', table_name) INTO @tables
FROM information_schema.tables
WHERE table_schema = 'exdb';
SET @tables = CONCAT('DROP TABLE ', @tables);
PREPARE stmt FROM @tables;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
SET FOREIGN_KEY_CHECKS = 1;
EOFMYSQL"
當我通過SSH連接到遠程服務器,登錄到mysql並發出命令時,MySQL部分本身就成功了。 但是,在此腳本中,我得到:
第8行的錯誤1064(42000):您的SQL語法有錯誤; 檢查與您的MySQL服務器版本相對應的手冊,以在第1行的'NULL'附近使用正確的語法
我認為此錯誤與-p\\$(cat /etc/psa/.psa.shadow)
的引用有關,但是我不知道如何解決此問題。
如果有人可以指出問題所在,我會感到很高興。
數據庫中沒有表,因此select不會得到結果, GROUP_CONCAT
返回NULL,而DROP TABLE
與NULL
是... NULL
。
使用NULL
作為語句來准備一條語句將產生錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.