0

データベースからすべてのテーブルを削除するために、いくつかの 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)この問題を解決する方法がわかりませんでした。

誰かが問題の場所を教えてくれたらうれしいです。

4

1 に答える 1