2009-12-11 61 views
1

我正在创建一个使用MySQL数据库的C++应用程序。如果可能的话,我希望应用程序自己创建一个帐户。我还没有找到这样做的方法。在MySQL中创建用户帐户的应用程序

每当我移植我的应用程序,我忘记了设置序列。当前的设置序列需要在MySQL中创建一个帐户以供应用程序使用。一旦应用程序具有帐户和权限,它就可以创建数据库并设置表格。

另外,这对我的最终用户来说会有些恼人。如果应用程序可以执行所有设置,我的应用程序将更易于使用。

在运行应用程序之前,我已经找到了所有状态以在MySQL中首先创建用户帐户的示例。方向通常说明如何使用MySQL命令行应用程序创建帐户。但我希望我的应用程序在MySQL中创建自己的帐户。

我正在使用Visual Studio 2008,C++语言和MySQL Connector C++ 1.0.5。该平台是Windows XP或Vista。连接器使用与Java JDBC API类似的API。我将接受Java或C++中的示例。

顺便说一句,我有使用ODBC的问题,所以它是不可能的。

谢谢。

+1

您的应用程序如何在不使用有权限的帐户的情况下在MySQL数据库中创建帐户?换句话说,您需要具有创建帐户权限的帐户的凭据才能创建帐户。 – delfuego 2009-12-11 21:04:27

+0

因此,我似乎必须通知用户,他们必须以适当的权限为我的应用程序创建一个帐户。 我应该在一个带有说明的大窗口中做这件事。 – 2009-12-11 21:31:24

回答

1

您在这里有chicken or the egg problem。如果没有登录服务器所需的帐户凭证并为应用程序创建另一个帐户,则无法创建数据库帐户。

此外,用户在安装/设置时间内必须提供数据库帐户凭证是非常常见的,即使它是“烦人的”。如果您的应用程序依赖于数据库,则应该希望用户自己处理数据库服务器和凭据参数。

不幸的是,数据库客户端(JDBC/ODBC)和语言(Java/C++)与您的困境无关。

如果你只需要一个轻量级的内部数据库为你的应用程序,也许你应该看看SQLite embedded database而不是MySQL。这将允许您的应用程序数据库自主存在,而无需任何用户设置。

+1

我的目标是让我的应用程序使用用户在其系统上的任何数据库。我开始使用MySQL,因为它是免费的。另外,我可以通过在发行包中不发布MySQL来避免许可问题。 – 2009-12-11 21:28:19

+0

是的,那么要求用户必须在安装/安装期间为您的应用程序提供一些数据库凭据是完全合理的,必要的和通用的。 – 2009-12-11 21:31:55

+2

由于您提到避免许可问题,因此MySQL Connector C++ 1.0.5也获得GPL许可,如果您将其用作适配器,据我所知,您的软件也将成为GPL。 – 2009-12-11 21:44:04

1

可能不是在您的应用程序中包含帐户创建,而是可以将其包含在您的设置中。在您的设置运行时,它也可以运行描述的创建或使用帐户的过程。

如果这看起来不能令人满意,也许您的设置说明可能会详细说明帐户创建过程。

1

您可以创建帐户和表以及... SQL查询中的所有内容。

首先,创建一个具有足够权限的默认帐户,以创建新的用户/表/数据库,但没有足够的权限来烧毁该地点。其次,当用户第一次启动你的应用程序时,在你的程序的后端登录到MySQL数据库,并向MySQL数据库发送一个SQL查询来为用户生成一个新的用户/表/数据库。

第三,您的应用程序从默认帐户注销,并注入新创建的帐户。

如果你做了类似的事情,一定要考虑可能的安全问题。

+0

我的理解是,您需要一个数据库{server}上的帐户才能发出SQL命令。 – 2009-12-11 21:26:06

+1

服务器*和帐户*(有权发出sql命令来创建帐户) – 2009-12-11 21:33:34

相关问题