2012-05-18 2 views
0

MySQL 데이터베이스를 사용하는 Qt/C++ 오픈 소스 프로젝트에서 일하고 있습니다. 사용자가 데이터베이스를 선택할 수있는 초기 구성 (첫 번째 실행) 중에 하나의 클래스가 사용됩니다. 로그인없이 호스트의 모든 데이터베이스 목록을 제공하고 SHOW DATABASES를 실행하는 방법이 있습니까? 거래가 있습니까? 특정 사용자가 소유 한 호스트뿐만 아니라 의 목록을 모두 데이터베이스에 저장하려고합니다. 이 작업을 수행하는 유일한 방법은 SHOW DATABASES를 실행하는 것입니다.을 특정 호스트의 루트로 사용하지만 절대적으로 필요한 특정 상황을 제외하고는 사용자가 루트 액세스 권한을 갖도록하고 싶지 않습니다.로그인하지 않고 MySQL 데이터베이스 목록 얻기

아이디어는 다음 세션에서 사용할 기본 데이터베이스를 선택하고 사용자/패스를 제공하는 대화 상자를 만드는 것입니다. 보너스 포인트는 각 데이터베이스의 소유자도 얻을 수 있다면. (예를 들어 데이터베이스에 foo은 johndoe가 소유하고 데이터베이스는 foo2은 janesmith가 소유하고 있습니다.) 사용자가 선택을하면 대화 상자는 해당 정보를 해당 사용자의 프로그램 구성 파일에 기록합니다. 정상 시동시 읽습니다.

사용자가 로그인/암호를 먼저 제공하고 해당 계정이 소유 한 데이터베이스 목록을 표시하는 등의 해결 방법을 찾아야합니까? 그것은 비교적 복잡하지만 쉽습니다.

답변

2

은 로그인하지 않고 MySql 쿼리를 실행할 수 없습니다. 아주 최소한의 권한을 가진 사용자를 생성 할 수 있습니다.

데이터베이스 목록을 표시하고 해당 사용자로 쿼리를 실행 한 다음 사용자가 로그인하여 연결 문자열을 변경하면 충분한 권한을 가진 사용자를 만들 수 있습니다. http://dev.mysql.com/doc/refman/5.0/en/privileges-provided.html#priv_show-databases 일반적으로

0

당신이 읽기 전용 권한이있는 응용 프로그램과 정보를 필요로 인출 한 후 사용자를 정의하면 자신의 자격 증명을 요청하고 사용자에게 제시 :

그냥 할 수있는 SHOW DATABASES 부여가있다 . 나는 단지 지나치게 단순화하고 이것이 어떻게 행해지는지 구체적으로 설명하지 않을 것이다.

관련 문제