sql >> データベース >  >> RDS >> Mysql

MySQLエラー1449:定義者として指定されたユーザーが存在しません

    これは通常、そのオブジェクトを作成したユーザーが存在しなくなったために、あるデータベースまたはサーバーから別のデータベースまたはサーバーにビュー/トリガー/プロシージャをエクスポートするときに発生します。

    2つのオプションがあります:

    1。 DEFINERを変更する

    これは、データベースオブジェクトを最初にインポートするときに、DEFINERを削除することで、おそらく最も簡単に実行できます。 ダンプからのステートメント。

    後で定義者を変更するのは少し注意が必要です:

    ビューの定義者を変更する方法>

    1. このSQLを実行して、必要なALTERステートメントを生成します

      SELECT CONCAT("ALTER DEFINER=`youruser`@`host` VIEW ", 
      table_name, " AS ", view_definition, ";") 
      FROM information_schema.views 
      WHERE table_schema='your-database-name';
      
    2. ALTERステートメントをコピーして実行します

    ストアドプロシージャの定義を変更する方法

    例:

    UPDATE `mysql`.`proc` p SET definer = '[email protected]%' WHERE definer='[email protected]%'
    

    これにより、すべてのデータベースのすべての定義者が変更されるため、注意してください。

    2。行方不明のユーザーを作成する

    MySQLデータベースの使用中に次のエラーが見つかった場合:

    The user specified as a definer ('someuser'@'%') does not exist`
    

    次に、次を使用して解決できます:

    GRANT ALL ON *.* TO 'someuser'@'%' IDENTIFIED BY 'complex-password';
    FLUSH PRIVILEGES;
    

    http://wwwから.lynnnayko.com / 2010/07 / mysql-user-specific-as-definer-root.html

    これは魅力のように機能しました。変更する必要があるのはsomeuserだけです。 行方不明のユーザーの名前に。ローカル開発サーバーでは、通常、rootを使用するだけです。 。

    また、実際にユーザーにALLを付与する必要があるかどうかも検討してください。 権限または彼らがより少ないものでできるかどうか。



    1. 重複データの問題とその修正方法

    2. データベース:パイプライン化された関数

    3. 指定されたテーブルの動的な列のセットを返す関数

    4. SQLskills待機タイプライブラリにSentryOneデータが表示されるようになりました