0

私のMySQLデータベースには、2種類のユーザーがいます

  1. MySQL ワークベンチや任意の ODBC エディターなどのクライアントからデータベースに直接接続してアクセスするために使用される MySQL ユーザー。
  2. ASP.NET メンバーシップ ユーザー + ロール : Web サイトへのログインを提供するために使用されます。

私の状況

ASP.NET ユーザー資格情報を使用して Web ページ経由でログインすると。一時的なランダムな My​​SQL ユーザー (権限の割り当て、パスワードの設定など) を作成し、現在ログインしている (asp.net ユーザー) にそれを与えて、MySQL データベースへの一時的なアクセスを取得したいと考えています。

ASP.NET ユーザーがユーザーを作成するためのルート アクセス権を持っている場合、データベースへの完全なアクセス権も持っています。私の問題は、別のクライアントから接続してデータベースに直接アクセスできるように、ユーザー名とパスワードを提供する必要があることです。(私は彼に root アクセスや永久アクセスを与えたくありません)

彼は別のクライアントからアクセスできると言いましたが、私の Web ページでの彼のログイン ステータスに従ってこれを制限したいと思います。彼が私のウェブページからログアウトしたときのように、新しく作成された MySQL ユーザーは期限切れまたは削除済みとしてマークされます。

これは非常に可能であると思いますが、出発点は考えられません。誰でも私を助けることができますか?

敬具

クリッシュ

4

1 に答える 1

1

これは可能です。create user and grant構文を使用して、ユーザーを作成し、それらに特権を付与することができます。

ただし、MySQLユーザーを有効期限でマッピングするために別のテーブルを維持する必要があります。

別の解決策について考えたことはありますか?

完了するのにはるかに多くの作業が必要になりますが、長期的には、より安定した/信頼性が高く、スケーラブルなソリューションになる可能性があります。

NET.NCPを使用してMySQL用の独自のWCFプロキシを作成すると、データベースではなくWCFサービスに対して承認するローカルユーザーアカウント/一時アカウントを管理することができます。プロキシはデータベースに直接接続します。このソリューションは、サードパーティのアプリケーションでも機能します。

カスタムプロキシを使用すると、次のようなはるかに優れた制御が可能になります。

  • 特定のユーザーのSQLをログに記録できること
  • データベースで実行したくない特定のコマンド
  • インターネット上で直接接続可能なMySQLサーバー
  • スケールアウト時に、異なるサーバーまたはクラスターへの読み取りと書き込みを分割する

編集1:以下のコメントに従って:

これは常に発生するとは限らないため、セッション終了のイベントに依存することはお勧めしません。ユーザーとその有効期限を管理するために、別のテーブルを作成することをお勧めします。たとえば、ユーザーIDまたはユーザー名とホストを有効期限とともに保持するテーブル。これは、要件に応じて、日時/整数(エポック)のいずれかになります。次に、クエリを呼び出して、このテーブルから期限切れになっているすべてのアカウントを識別する必要があります。その後、MySQLからユーザーアカウントを削除できます。

MySQLのバージョンによっては、多くのロジックをいくつかのストアドプロシージャにラップして、クエリとメンテナンスのオーバーヘッドを容易にすることができます。

于 2013-02-19T11:06:33.843 に答える