c программа для добавления пользователя в MySQL - PullRequest
1 голос
/ 05 августа 2011

Я собираюсь добавить пользователя в MySQL через программу C. Я собираюсь сделать последний год проекта в MySQL. Не поймите меня неправильно, если я спрошу неправильно. У меня есть одно сомнение в этой концепции: мы можем добавить нового пользователя с некоторыми привилегиями в качестве пользователя root. После этого нам нужен выход для root или нет. Если я делаю, как выйти из системы root.

//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);

Итак, мы создали пользователя в режиме root. Затем мне нужно войти в 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);
    }

1 Ответ

2 голосов
/ 05 августа 2011

Если вы хотите использовать mysql_real_connect (), я считаю, что было бы лучше закрыть соединение, прежде чем пытаться открыть его как другого пользователя, поскольку описание API для mysql_real_connect () не описывает, как оно обрабатывает такиеситуация (может работать, но процесс можно оставить открытым на сервере mysql, ожидая тайм-аута).

Однако вы можете использовать вызов API mysql_change_user ().

синтаксис:

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

Больше информации в соответствующем описании API здесь , оно реализовано начиная с MySQL 3.23.3.

...