2012-04-27 29 views
1

各セッションユーザのアクティビティを非常に高いレベルでテーブルに保存したいと思います。 私は "audit.login_trigger"という手続きを書いた。私は必要なスキーマ(監査DBとテーブル)を作成しました。このようなものです。Mysql:init_connect変数内で​​プロシージャコールを正しく設定する方法

CREATE PROCEDURE audit.login_trigger() 
SQL SECURITY DEFINER 
BEGIN 
    INSERT INTO audit.audit_connect (thread_id, user, login_ts) 
    VALUES (CONNECTION_ID(), USER(), NOW()); 
END; 

私はこれを "init_connect"内に配置しました。

SET GLOBAL init_connect="CALL audit.login_trigger()"; 

すべてのユーザー接続でこれを実行します。この手順のEXECUTE権限をrootユーザーに渡しましたが、rootユーザーがログインしたときに、監査スキーマが予期したとおりに移入されていません。ここで何がうまくいかなかったでしょうか?

ありがとうございます。

答えて

0

このユーザーの名前は「root」なので、スーパーユーザー権限を持っているのだろうかと思います。そうであれば、init_connectはスーパーユーザーに対して起動しないことに注意してください。

+0

これは、init_connectからストアドプロシージャを呼び出すためには機能していないようです。一部の人々はそれを成功させるか、徹底的なテストをしなくても機能することを提案するだけかもしれません。ここにはawsディスカッション[リンクはこちら](https://forums.aws.amazon.com/thread.jspa?threadID=111750)へのリンクがあります。多分それはビルドバージョンによって異なります。 – Drew

+0

5.7.13でうまく動作するようになった。ただし、5.6.24または5.6.31では機能しません。私が*これを働かせると言うとき、私は何か働くことを意味します。 'root'のためには、あまりにも長い間技術的な理由があっても、それはとにかく動作したくないでしょう。 – Drew

関連する問題