ホームページ >データベース >mysql チュートリアル >SQL 関数を phpMyAdmin にインポートすると、「アクセスが拒否されました。この操作には SUPER 権限が必要です」というエラーが表示されるのはなぜですか?

SQL 関数を phpMyAdmin にインポートすると、「アクセスが拒否されました。この操作には SUPER 権限が必要です」というエラーが表示されるのはなぜですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-02 14:53:30313ブラウズ

Why do I get the

エラー: アクセスが拒否されました。この操作には SUPER 権限が必要です

SQL 関数を phpMyAdmin にインポートしようとすると、「#1227 - アクセスが拒否されました。この操作には SUPER 権限が必要です。」というエラー メッセージが表示される場合があります。このエラーはイライラするかもしれませんが、解決策は比較的簡単です。

SUPER 権限について

MySQL では、SUPER 権限はユーザーにストアド ルーチンの作成や変更など、高度な操作を実行する機能。デフォルトでは、標準ユーザーは SUPER 権限を持っていません。

DEFINER ステートメントの削除

あなたの場合、問題は、 SQLクエリ。 DEFINER ステートメントは、作成された関数を所有するユーザーを指定します。指定されたユーザーに SUPER 権限がない場合、クエリは失敗します。

この問題を解決するには、phpMyAdmin にインポートする前に SQL クエリから DEFINER ステートメントを削除します。これにより、SUPER 権限を必要とせずに関数を作成できるようになります。

区切り文字の設定

さらに、SQL テキストの下に区切り文字フィールドを設定することが不可欠です。 phpMyAdminのボックス。このフィールドは、SQL ステートメントを区切るために使用される文字を指定します。デフォルトでは、セミコロン (;) が区切り文字として使用されますが、クエリの関数定義内にセミコロンが含まれている場合は、別の区切り文字を選択する必要があります。

DEFINER ステートメントを使用しないクエリの例

DEFINER ステートメントを使用しない SQL クエリの例を次に示します。

/*!50003 DROP FUNCTION IF EXISTS `f_calc_gst` */;;
/*!50003 SET SESSION SQL_MODE=""*/;;
/*!50003 CREATE*/ /*!50003 FUNCTION `f_calc_gst`(p_ht decimal(15,3), p_province varchar(2)) RETURNS varchar(255) CHARSET utf8
begin
  declare res varchar(255); 
  declare v_gst decimal(15,3);
  declare v_gst_formula varchar(255);

  select GST, GST_formula
  into v_gst, v_gst_formula
  from taxes_periods
  where NOW() between dt_debut and dt_fin
  and id_province = p_province;

  set v_gst_formula = replace(v_gst_formula, 'HT$', p_ht);
  set v_gst_formula = replace(v_gst_formula, 'GST%', v_gst);

  set res = concat('select round(', v_gst_formula, ',2) "gst"');
  return res;
end */;;

DEFINER ステートメントを削除して正しい区切り文字を設定すると、SQL クエリをインポートできるようになります。アクセス拒否エラーが発生することなく、phpMyAdmin に正常にアクセスできました。

以上がSQL 関数を phpMyAdmin にインポートすると、「アクセスが拒否されました。この操作には SUPER 権限が必要です」というエラーが表示されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。