2011-08-05 5 views
1

C 프로그램을 통해 MySQL에 사용자를 추가 할 예정입니다. 나는 MySQL에서 마지막 해의 프로젝트를 할 예정이다. 내가 틀리게 물으면 잘못 이해하지 마라. 이 개념에 의심의 여지가 있습니다. 즉, 루트 권한을 가진 새로운 사용자를 추가 할 수 있습니다. 그 후에 루트에 대한 로그 아웃이 필요한지 아닌지를 결정해야합니다. 내가 할 경우 루트를 로그 아웃하는 방법.mysql에 사용자를 추가하는 C 프로그램

//header files inclusion 

int main(void) 
{ 
    //declared MYSQL,MYSQL_REs,MYSQL_ROW variables. 

    // here declared username,pwd,localhost,databasename 

    // here declared variable to query 

    con = mysql_init(NULL); 

    /* connection to database */ 
    if(!mysql_real_connect(con,server,username,password,database,0,NULL,0)) { 
    { 
     printf("error in connection\n"); 
     exit(1); 
    } 

    printf("\n Enter the username to create a user in DB\n"); 
    scanf("%s",name); 

    printf("\n Enter password \n"); 
    scanf("%s",pwd); 

    sprintf(sql_addUser,"create user '%s'@'localhost' identified by '%s';",name,pwd); 
    mysql_query(con,sql_addUser); 

    sprintf(sql_grantAcc,"grant INSERT on '%s'.* to '%s'@'localhost';",databse,name); 
    mysql_query(con,sql_grantAcc); 

그래서 여기서 루트 모드로 사용자를 만들었습니다. 그런 다음 새로 생성 된 사용자를 사용하여 MySQL에 들어가야하므로 로그 아웃하거나 연결을 닫아야합니다. 사용자 모드를 변경하는 방법에 대한 해결책을 알려주십시오.

내가 설정 한 연결을 닫을 필요가있는 사용자 모드를 변경한다고 가정하면이 맞지 않습니까?

mysql_free_result(result); 
    mysql_close(con); 

con = mysql_init(NULL); 
    if(!mysql_real_connect(con,server,name,pwd,database,0,NULL,0)) { 
    { 
     printf("error in connection\n"); 
     exit(1); 
    } 

답변

2

는 mysql_real_connect() 함수를() mysql_real_connect() 나던에 대한 API의 설명은 이러한 상황을 처리하는 방법을 설명하는대로 내가, 그것은 개의 다른 사용자로 다시 시도하기 전에 연결을 종료하는 가장 좋은 것입니다 믿고 사용하려는 경우 (작동하지 않을 수 있습니다 프로세스는 mysql 서버에서 열어두고, 타임 아웃을 기다려야한다.)

그러나 API의 mysql_change_user() 호출을 사용할 수 있습니다.

구문 : 각각의 API를 설명 here

my_bool mysql_change_user(MYSQL *mysql, const char *user, const char *password, const char *db) 

더 많은 정보를 원하시면,이 MySQL의 3.23.3부터 시행합니다.

+0

안녕하세요 @Qsp 응답 해 주셔서 감사합니다. 나는 내가하는 일에 투쟁하지만, 더 많은 일을하기 위해 해결책을 주었다. 나는 mysql_change_user가 나를 위해 가장 잘 맞다고 생각한다. bcoz 나는 데이터베이스의 미래를 바꾸지 않는다. – Srini

관련 문제