2009-12-11 4 views
1

MySQL 데이터베이스를 사용하는 C++ 응용 프로그램을 만들고 있습니다. 가능한 경우 응용 프로그램에서 자체 계정을 생성하고 싶습니다. 그렇게 할 방법을 찾지 못했습니다.MySQL에서 사용자 계정을 만드는 응용 프로그램

매번 응용 프로그램을 포팅 할 때마다 설정 시퀀스를 잊어 버립니다. 현재의 설정 순서에서는 응용 프로그램이 사용할 수 있도록 MySQL에 계정을 만들어야합니다. 응용 프로그램에 계정 및 권한이 있으면 데이터베이스를 만들고 테이블을 설정할 수 있습니다.

또한 내 최종 사용자에게는 약간 짜증이납니다. 응용 프로그램이 모든 설정을 수행 할 수 있으면 내 응용 프로그램을 사용하는 것이 더 쉬울 것입니다.

예제 나는 모든 상태가 응용 프로그램을 실행하기 전에 먼저 MySQL에서 사용자 계정을 만드는 것으로 나타났습니다. 경로는 대개 MySQL 명령 줄 응용 프로그램을 사용하여 계정을 만드는 방법을 알려줍니다. 하지만 내 응용 프로그램이 MySQL에서 자체 계정을 만들길 원합니다.

Visual Studio 2008, C++ 언어 및 MySQL Connector C++ 1.0.5를 사용하고 있습니다. 플랫폼은 Windows XP 또는 Vista입니다. 커넥터는 Java API와 유사한 API를 사용합니다. Java 나 C++로 예제를 받아 들일 것입니다.

나는 ODBC를 사용하는 데 문제가있어서 질문에서 벗어났습니다.

감사합니다.

+1

권한이있는 계정을 사용하지 않고 응용 프로그램이 MySQL 데이터베이스에서 계정을 만드는 방법은 무엇입니까? 즉, 계정을 만들려면 계정을 만들 권한이있는 계정의 자격 증명이 필요합니다. – delfuego

+0

그래서 적절한 권한으로 내 애플리케이션에 대한 계정을 만들어야한다는 것을 사용자에게 알려야하는 것으로 보입니다. 지시 사항이있는 큰 창에서이를 작성해야합니다. –

답변

1

여기에 chicken or the egg problem이 있습니다. 서버에 로그인하고 응용 프로그램에 대한 다른 계정을 만드는 데 필요한 계정 자격 증명이없는 상태에서 데이터베이스 계정을 만들 수 없습니다.

게다가 설치/설정 중에 사용자가 "성가신"경우에도 자격 증명을 제공해야하는 경우가 일반적입니다. 응용 프로그램이 데이터베이스에 의존하는 경우, 사용자는 데이터베이스 서버 및 권한 정보 매개 변수를 자체적으로 처리해야합니다.

데이터베이스 클라이언트 (JDBC/ODBC)와 언어 (Java/C++)는 귀하의 딜레마와 관련이 없습니다.

응용 프로그램에 필요한 경량의 내부 데이터베이스 만 필요하면 MySQL 대신 SQLite embedded database을 조사해야합니다. 그러면 사용자 설정없이 응용 프로그램 데이터베이스가 자치적으로 존재할 수 있습니다.

+1

내 응용 프로그램이 사용자가 자신의 시스템에 가지고있는 데이터베이스를 사용하게하려는 것입니다. 나는 MySQL을 무료로 시작했기 때문에 시작했다. 또한 배포 패키지에 MySQL을 공개하지 않음으로써 라이센스 문제를 피할 수 있습니다. –

+0

그래, 설치/설치 중에 사용자가 응용 프로그램에 데이터베이스 자격 증명을 제공해야하는 것은 완전히 합리적이고 필요하며 일반적입니다. –

+2

라이선스 문제를 피하는 것에 대해 언급 했으므로, MySQL Connector C++ 1.0.5도 GPL 라이센스를받습니다. 어댑터로 사용한다면, 알고있는 한 소프트웨어는 GPL이됩니다. –

1

응용 프로그램에서 계정 생성을 포함하는 대신 설정에이를 포함시킬 수 있습니다. 설정이 실행되면 설명 된 프로세스가 실행되어 계정을 만들거나 사용할 수 있습니다.

이 설정이 만족스럽지 않다면 설치 지침에 계정 생성 프로세스가 자세히 나와있을 수 있습니다.

1

SQL 쿼리의 모든 항목을 계정 및 테이블로 만들 수 있습니다.

먼저 새 사용자/테이블/데이터베이스를 만들 수있는 충분한 권한이 있지만 장소를 태울 충분한 권한이없는 기본 계정을 만듭니다.

둘째, 사용자가 응용 프로그램을 처음 시작하면 백엔드에서 프로그램이 MySQL 데이터베이스에 로그인하고 MySQL 데이터베이스에 SQL 쿼리를 보내어 새 사용자/테이블/데이터베이스를 생성합니다.

셋째, 응용 프로그램이 기본 계정과 새로 만든 계정으로 로그 아웃합니다.

이와 비슷한 작업을 수행하는 경우 가능한 보안 문제를 고려해야합니다.

+0

제 생각에 SQL 명령을 실행하려면 {server} 데이터베이스에 계정이 있어야합니다. –

+1

서버 * 및 계정 * (계정 생성을 위해 sql 명령을 실행할 수있는 권한이 있음) –