10bet网址
MySQL 5.6リファレンスマニュアル
下载本手册
PDF(美国高级主任)- 26.8 mb
PDF (A4)- 26.8 mb


20.4.6 esc / esc / esc / esc / esc / esc / esc / esc / esc / esc / esc / esc

スケジュル設定済みベントの実行を有効または無効にするには,event_schedulerグロ,バルシステム変数の値を設定する必要があります。これには超级権限が必要です。

事件権限は,aapl . aapl .ベントの作成,変更,および削除を制御します。この権限は,格兰特を使用して与えることができます。たとえば,次の格兰特ステ,トメントは,myschemaという名前のスキ,マに対する事件権限を,ユ,ザ,jon@ghidoraに与えます。

在我的模式上授予事件。*致jon@ghidora;

(このユーザーアカウントがすでに存在していることと,その他の点では変更されないままであると想定しています)。

この同じユ,ザ,にすべてのスキ,マに対する事件権限を認めるには,次のステ,トメントを使用します。

*.*上的Grant事件TO jon@ghidora;

事件権限にはグロ,バルまたはスキ,マレベルのスコ,プがあります。このため,単一のテ,ブルに対してこれを与えようとすると,次のようなエラ,が生じます。

mysql> GRANT EVENTmytable TO jon@ghidora;ERROR 1144(42000):非法的GRANT/REVOKE命令;请查阅手册以了解可以使用哪些特权

イベントはその定義者の権限で実行され,定義者が必須の権限を保有していないアクションは実行できません。たとえば,jon@ghidoramyschemaに対する事件権限を保有しているとします。また,このユ,ザ,はmyschemaに対する选择権限は保有しているが,このスキ,マに対するほかの権限は保有していないとします。jon@ghidoraは,次のような新しい。

每10秒创建事件e_store_ts插入到myschema中。mytable VALUES (UNIX_TIMESTAMP());

このユ,ザ,は1分ほど待機したあと,テ,ブルに複数の新しい行が表示されることを予想してSELECT * FROM mytable;クエリ,を実行します。実際は,テ,ブルは空です。ユザは該当するテーブルに対する插入権限がないので,电子邮件ベントの効果はありませんでした。

MySQLエラログ(主机名.err)を調べると,电子词典ベントは実行していますが,RetCode = 0で示されているように,电子邮件ベントが実行しようとしているアクションは失敗していることがわかります。

060209 22:39:44[注]EVEX正在执行事件newdb。e [EXPR:10] 060209 22:39:44[注]EVEX EXECUTED event newdb. e [EXPR:10]e [EXPR: 10]。RetCode=0 060209 22:39:54[注]EVEX正在执行的事件newdb。e [EXPR:10] 060209 22:39:54[注]EVEX EXECUTED event newdb. e [EXPR:10]e [EXPR: 10]。RetCode=0 060209 22:40:04[注]EVEX正在执行事件newdb. RetCode=0 060209 22:40:04e [EXPR:10] 060209 22:40:04[注]EVEX EXECUTED event newdb. e [EXPR:10]e [EXPR: 10]。RetCode = 0

このユーザーは,エラーログにアクセスできない可能性が非常に高いので,直接それを実行することによって,イベントのアクションステートメントが有効であるかどうか検証できます。

mysql> INSERT INTO myschemamytableVALUES (UNIX_TIMESTAMP()); ERROR 1142 (42000): INSERT command denied to user 'jon'@'ghidora' for table 'mytable'

INFORMATION_SCHEMA。事件テ,ブルを調べることによって,e_store_tsが存在し有効になっているが,そのLAST_EXECUTEDカラムがになっていることがわかります。

mysql> SELECT * FROM INFORMATION_SCHEMA事件> WHERE EVENT_NAME='e_store_ts' > AND EVENT_SCHEMA='myschema'\G *************************** 1. row *************************** EVENT_CATALOG: NULL EVENT_SCHEMA: myschema EVENT_NAME: e_store_ts DEFINER: jon@ghidora EVENT_BODY: SQL EVENT_DEFINITION: INSERT INTO myschema.mytable VALUES (UNIX_TIMESTAMP()) EVENT_TYPE: RECURRING EXECUTE_AT: NULL INTERVAL_VALUE: 5 INTERVAL_FIELD: SECOND SQL_MODE: NULL STARTS: 0000-00-00 00:00:00 ENDS: 0000-00-00 00:00:00 STATUS: ENABLED ON_COMPLETION: NOT PRESERVE CREATED: 2006-02-09 22:36:06 LAST_ALTERED: 2006-02-09 22:36:06 LAST_EXECUTED: NULL EVENT_COMMENT: 1 row in set (0.00 sec)

事件権限を取り消すには,撤销ステ,トメントを使用します。この例では,スキ,マmyschemaに対する事件権限がjon@ghidoraユ,ザ,アカウントから削除されます。

在我的模式上撤销事件。*来自jon@ghidora;
重要

ユ,ザ,から事件権限を取り消しても,そのユーザーが作成したイベントが削除されたり無効にされたりすることはありません。

作成したユーザーの名前を変更したり削除したりしても,イベントが移行または削除されることはありません。

ユザjon@ghidoraに,myschemaスキ,マに対する事件および插入権限が与えられているとします。続いてこのユザが次のベントを作成します。

每7秒创建一个插入事件到myschema.mytable;

この电子邮箱ベントの作成後,jon@ghidora事件権限を取り消します。ただし,e_insertは実行し続け,7秒ごとに新しい行がmytableに挿入されます。が次のどらかのステトメントを発行した場合も,同じことが当てはまります。

  • DROP USER jon@ghidora;

  • 重命名用户jon@ghidora到someotherguy@ghidora;

减少用户または重命名用户ステ,トメントの発行前後で,mysql.eventテ,ブル(このセクションで後述します)か,INFORMATION_SCHEMA。事件テブル(セクション21.7 " information_schema eventsテブル"を参照してください)を調べると,これが当てはまることを確認できます。

ベント定義は,mysql.eventテ,ブルに格納されています。別のユザアカウントが作成したベントを削除するには,MySQLユザ(または必要な権限を保有する別のユザ)がこのテブルから行を削除できます。たとえば,前述のe_insertを削除するには,は次のステ,トメントを使用できます。

从mysql删除。WHERE db = 'myschema' AND definer = 'jon@ghidora' AND name = 'e_insert';

mysql.eventテーブルから行を削除するときには,イベント名,データベーススキーマ名,ユーザーアカウントを一致させることが重要です。これは,同じユザが,別々のスキマに同じ名前の異なるベントを作成できるためです。

ユ,ザ,の事件権限は,mysql.userおよびmysql.dbテ,ブルのEvent_privカラムに格納されています。どらの場合でも,このカラムには,“y”または" n "のどらかの値が含まれています。" n "がデフォルトです。指定されたユ,ザ,がグロ,バルな事件権限を保有している場合(;*.*上的Grant事件を使用して権限が与えられた場合)にのみ,そのユ,ザ,のmysql.user.Event_priv“y”に設定されます。スキ,マレベルの事件権限の場合,格兰特は,mysql.dbに行を作成し,その行のDbカラムをスキ,マの名前に,用户カラムをユ,ザ,の名前に,Event_privカラムを“y”に設定します。格兰特事件および撤销事件ステートメントがこれらのテーブルでの必要な操作を実行するので,これらのテーブルを直接操作する必要はありません。

5つのステータス変数が,イベント関連操作のカウントを提供します(ただし,イベントが実行するステートメントのカウントは提供しませんセクションd.1“ストアドプログラムの制約”を参照してください)。これらを次に示します。

  • Com_create_event:サ,バ,が最後に再起動してから実行された创建事件ステ,トメントの数。

  • Com_alter_event:サ,バ,が最後に再起動してから実行された改变事件ステ,トメントの数。

  • Com_drop_event:サ,バ,が最後に再起動してから実行された删除事件ステ,トメントの数。

  • Com_show_create_event:サ,バ,が最後に再起動してから実行された显示创建事件ステ,トメントの数。

  • Com_show_events:サ,バ,が最後に再起動してから実行された显示事件ステ,トメントの数。

ステ,トメント显示状态像'%事件%';を実行すると,これらのすべての現在値を一度に表示できます。