1. ホーム
  2. mysql

[解決済み] MySQLダンプからDEFINER句を削除する

2022-06-09 08:18:34

質問

私のデータベースの 1 つの MySQL ダンプがあります。その中に、次のような DEFINER 節があります。

"DEFINER=`root`@`localhost`" 

すなわち、これらの DEFINER 節は、私の CREATE VIEW および CREATE PROCEDURE ステートメント上にあります。ダンプファイルからこれらの DEFINER 節を削除する方法はありますか?

どのように解決するのですか?

の追加を無視する方法があるとは思えません。 DEFINER をダンプに追加することを無視する方法はないと思います。しかし、ダンプファイルが作成された後にそれらを削除する方法はあります。

  1. テキスト エディターでダンプ ファイルを開き、出現するすべての DEFINER=root@localhost を空の文字列 "" に置き換えてください。

  2. を使ってダンプを編集する(または出力をパイプする)。 perl :

    perl -p -i.bak -e "s/DEFINER=\`\w.*\`@\`\d[0-3].*[0-3]\`//g" mydatabase.sql
    
    
  3. 出力をパイプで sed :

    mysqldump ... | sed -e 's/DEFINER[ ]*=[ ]*[^*]*\*/\*/' > triggers_backup.sql