2012-11-21 4 views
8

にSUPER権限なしでビューを作成し、私はこのようなビューをインポート/作成するphpMyAdminの中にSQL]タブを経由しようとしています:はphpMyAdminの

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特権を取得していないので、これを回避するにはどうしてもありますか?ドキュメントから

+0

いいえ、あなたはそれを回避することはできません。 –

+0

私はあなたが使用しているデータベースでテストビューを作成することができると信じて別の方法。テストビューをエクスポートし、ユーザー名を確認して使用します。 – madi

+0

明示的に必要でない限り 'username @ localhost'にするべきではありませんが、' username @% ' –

答えて

11

:-)事前に

ありがとう:

あなたはDEFINER句を指定する場合は、SUPER権限を持っていない限り、あなたはどのユーザーに値を設定しますが、あなた自身のことはできません。これらの規則は有効なDEFINERユーザ値を決定:

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

それはlocalhost @bynameないが、MySQLのアカウントを確認してください。

ソリューション:

  • SUPER権限を付与されたアカウントを使用してDEFINER句を使用して新しいビューを作成します。
  • CREATE VIEWでDEFINER句を使用しないでください。この場合、MySQLはビューDEFINER = CURRENT_USERを作成します。
+0

明示的に必要でない限り、定義者は' username @ localhost'ではないはずですが、 –