0

MySQL データベースを使用する Qt/C++ オープン ソース プロジェクトに取り組んでいます。1 つのクラスは、ユーザーがデータベースを選択できる初期構成 (最初の実行) 中に使用されます。ログインしてSHOW DATABASESを実行せずに、ホスト上のすべてのデータベースのリストを提供する方法はありますか? 取引?特定のユーザーが所有するデータベースだけでなく、ホスト上のすべてのデータベースのリストを取得したいと考えています。これを行う唯一の方法は、SHOW DATABASES を実行することです。特定のホストのルートとして、しかし、絶対に必要な特定の状況を除いて、ユーザーにルート アクセスを要求したくありません。

アイデアは、ユーザーが後続のセッションで使用するデフォルトのデータベースを選択し、それに対応するユーザー/パスを提供できるダイアログを用意することです。各データベースの所有者も取得できればボーナス ポイントです。(たとえば、データベースfooは johndoe が所有し、データベースfoo2は janesmith が所有していることをプログラムに表示させます) ユーザーが選択すると、ダイアログはこの情報をそのユーザーのプログラム構成ファイルに書き込み、通常の起動時に読み込まれます。 .

これを行うことはできますか、それともユーザーに最初にログイン/パスワードを提供させ、そのアカウントが所有するデータベースのリストを表示するなどの回避策を見つける必要がありますか? それは比較的面倒ですが、簡単です。

4

2 に答える 2

2

ログインせずにMySqlクエリを実行することはできません。つまり、最小限の権限を持つユーザーを作成することは可能です。

データベースのリストを表示し、そのユーザーとしてクエリを実行するのに十分な権限を持つユーザーを作成し、ユーザーがログインしたときに接続文字列を変更できます。

それを可能にするSHOW DATABASES助成金があります:http://dev.mysql.com/doc/refman/5.0/en/privileges-provided.html#priv_show-databases

于 2012-05-18T20:22:01.993 に答える
0

通常、読み取り専用権限を持つアプリケーションのユーザーを定義し、必要な情報をフェッチした後、それをユーザーに提示して資格情報を要求します。私は単純化しすぎており、これがどのように行われるかの詳細については触れていません。

于 2012-05-18T20:24:59.990 に答える