いくつかのフレームワーク (symfony/Django) では、通常はユーザー テーブル (指定されたグループ テーブルにユーザーを割り当てる) を介してアクセスを制御する管理ジェネレーターがあります。
興味がありますが、代わりに MySQL の実際のユーザー (選択/読み取り/書き込みアクセスが既に組み込まれている) を単純に使用しないのはなぜですか?
いくつかのフレームワーク (symfony/Django) では、通常はユーザー テーブル (指定されたグループ テーブルにユーザーを割り当てる) を介してアクセスを制御する管理ジェネレーターがあります。
興味がありますが、代わりに MySQL の実際のユーザー (選択/読み取り/書き込みアクセスが既に組み込まれている) を単純に使用しないのはなぜですか?
リストされていないもう1つの理由は、MySQLのユーザー名/パスワードが構成ファイルにクリアテキストで保存されているという事実です。コードに脆弱性があり、ユーザーがテキストファイルを読み取ることができます。これにより、パスワードハッシュを破ることなく、ハッカーにすぐにアクセスできるようになります。データベースをリモートでアクセスできるようにすることは、重大なセキュリティ上の危険であり、PCI-DSSによって禁止されています。
もう1つの理由は、新しいアカウントを追加したり、パスワードを変更したりするために、WebアプリケーションにROOTアクセスが必要になることです。これは、実行できる最悪のことの1つです。多くのデータベース(mysqlを含む)では、これにより、ハッカーがSQLインジェクションの脆弱性を完全なリモートコード実行(.phpファイルのアップロードなど)に変えることが非常に簡単になります。
理由の 1 つは、多くの ISP が mysql データベースへのユーザー アカウントを (追加料金なしで) 1 つしか提供していないことです。
ここでの魔法は、最小公分母であり、サーバー管理の要件を最小限に抑えて、可能な限り広範囲に簡単に展開できることです。
ほとんどの人は、アプリケーションの MySQL ユーザーに、特に共有ホスティング環境で、新しい MySQL ユーザーを作成して権限を付与する機能を与えることに少し不安を感じていると思います。扱いはそれほど難しくなく、すべてを 1 つのデータベース テーブル内に保持し、好きな権限を与えることができます。