sql >> データベース >  >> RDS >> Mysql

Mysqlのカーソルにはユーザー以外の権限がありますか?

    はい、設計上、カーソルは同じSELECTとは異なる動作をする可能性があります プロシージャを呼び出したユーザーによってクエリが実行された場合、クエリは動作する可能性があります。

    DEFINERを指定しない場合 ストアドプログラム(proc、function、trigger、またはevent)またはビューを作成すると、オブジェクトにアクセスすると、オブジェクトを呼び出したユーザーではなく、最初に定義したユーザーの権限で実行されます。

    ここには3つのオプションがあります:

    • 現在のDEFINERの権限を確認または変更する可能性があります 必要に応じてユーザー。または、
    • 別のDEFINERを指定します ストアドプログラムまたはビューを定義するときのユーザー...あなた(オブジェクトを作成する人)がSUPERを持っている限り、これを行うことができます 特権、およびオブジェクトを呼び出す(アクセスする)ユーザーは、一時的にそのDEFINERの権限を持ちます 代わりにユーザー。または、
    • SQL SECURITY INVOKER プロシージャ、関数、およびビューの定義(トリガーやイベントではありません)により、デフォルトの動作であるdefinerではなく、オブジェクトを呼び出したユーザーの権限でオブジェクトが実行されます。

    たとえば、DEFINER =`someguy` @` localhost`:

    が表示されている場合、既存の定義者が持っている権限を確認します。
    mysql> SHOW GRANTS FOR 'someguy'@'localhost';
    

    現在の定義者は、SHOW CREATE PROCEDURE procedure_name;を使用してプロシージャの定義で見つけることができます。 。




    1. 文字列間の類似性を返すOracle関数

    2. byteaをpostgresqljsonタイプに挿入します

    3. Windows10のPostgresql11にJSONファイルをインポートする

    4. クエリを最適化するためのタイムスタンプのインデックスの作成