データベースからすべてのテーブルを削除するために、いくつかの MySQL コマンドをリモート サーバーで実行したいと考えています。したがって、SSH に接続し (SSH は公開鍵を使用してログインします)、mysql コマンドをすべて bash スクリプトで実行します。
#!/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 行目の ERROR 1064 (42000): SQL 構文にエラーがあります。1行目の「NULL」付近で使用する正しい構文については、MySQLサーバーのバージョンに対応するマニュアルを確認してください
このエラーは の引用に関係していると思いますが、-p\$(cat /etc/psa/.psa.shadow)
この問題を解決する方法がわかりませんでした。
誰かが問題の場所を教えてくれたらうれしいです。