例: 非スーパーユーザーは、テーブル "a"に挿入するプロシージャに対して実行を許可されています。そのユーザーには、テーブル "a"が "データベースを表示"しているデータベースが表示されますが、 "テーブルを表示"するテーブル "a"は表示されません。しかし、同じユーザーは、「プロシージャーを表示する」という基本的なプロシージャー情報を見ることができます。mysqlユーザーはストアドプロシージャを見ることができますか?
これは監査のためのものであり、可能な限り監査プロセスを不明瞭にしたいと考えています。ユーザーがプロシージャで実行を許可されている場合、そのユーザーはそのプロシージャを表示する必要がありますか?そして、プロシージャが触れるデータベースを見ることができなければなりませんか?
右。したがって、非スーパーユーザーは、(プロジェクト所有者でない場合)ショー作成プロシージャでもプロシージャが何をするかを見ることができません。しかし、彼らは手順が存在することを知ることができます。私は、プロシージャが存在することを知る能力を持っていないユーザがプロシージャに対して実行を許可できるとは思わない。 –
私は彼らがそれを知る方法を見ていない、実際に知っていないプロシージャを知る唯一の方法は、mysql.procを読むことであり、そうではありません。もちろん、データベースに対するAPIであることを教えてくれるので、それぞれのprocとそのパラメータと結果セットの説明を渡します。 –
または実際には、おそらく 'SELECT ROUTINE_NAME FROM INFORMATION_SCHEMA.ROUTINES'を実行できます。私はそのテーブルに何の制限も見ません。 –