9

phpmyadmin 内の SQL タブを介して、次のようなビューを作成/インポートしようとしています:

CREATE ALGORITHM=UNDEFINED DEFINER=`byname`@`localhost` SQL SECURITY DEFINER VIEW `wr_averages` AS select `nf_users`.`id` AS `id`,(`nf_users`.`points` / `nf_users`.`played`) AS `average_points` from `nf_users` where (`nf_users`.`played` > 24);

次のエラーが表示されます。

#1227 - Access denied; you need the SUPER privilege for this operation

ホスティング会社で SUPER 権限を取得できません。これを回避する方法はありますか?

前もって感謝します :-)

4

1 に答える 1

19

ドキュメントから:

DEFINER 句を指定した場合、SUPER 権限を持っていない限り、自分のユーザー以外に値を設定することはできません。これらの規則によって、正当な DEFINER ユーザー値が決定されます。

  • *SUPER 権限を持っていない場合、正当なユーザー値は、文字どおりまたは CURRENT_USER を使用して指定された自分のアカウントだけです。定義者を他のアカウントに設定することはできません。*
  • SUPER 権限を持っている場合は、構文的に正しいアカウント名を指定できます。アカウントが実際に存在しない場合は、警告が生成されます。

MySQL アカウントを確認してください。 byname@ではありませんlocalhost

ソリューション:

  • SUPER 権限を付与されたアカウントを使用して、DEFINER 句で新しいビューを作成します。
  • CREATE VIEW で DEFINER 句を使用しないでください。この場合、MySQL はビュー DEFINER = CURRENT_USER を作成します。
于 2012-11-21T12:24:35.220 に答える