0

我正在开发一个使用 MySQL 数据库的 Qt/C++ 开源项目。一个类将在初始配置(第一次运行)期间使用,用户将能够选择一个数据库。有没有办法在不登录并执行SHOW DATABASES的情况下提供主机上所有数据库的列表?交易?我想获取主机上所有数据库的列表,而不仅仅是特定用户拥有的数据库。我知道的唯一方法是执行SHOW DATABASES;作为特定主机上的 root 用户,但我不想要求用户具有 root 访问权限,除非在某些绝对必要的情况下。

这个想法是有一个对话框,让用户选择他们想要在后续会话期间使用的默认数据库,并提供与之配套的用户/通行证。如果我也能获得每个数据库的所有者,则可以加分。(例如,让程序显示数据库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 回答