mysql.h


Función mysql_change_user()

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

Cambia el usuario y hace que la base de datos especificada por db sea la base de datos por defecto (la actual) en la conexión especificada por mysql. En consultas sucesivas, esta base de datos será la base de datos por defecto para referencias a tablas que no incluyan un especificador de base de datos explícito.

Esta función se añadió en MySQL 3.23.3.

mysql_change_user() falla si el usuario conectado no puede ser autentificado o si no tiene permiso para usar las base de datos. En ese caso, el usuario y la base de datos no se cambian.

El parámetro db debe ser NULL si no se quiere tener una base de datos por defecto.

A partir de MySQL 4.0.6 este comando producirá siempre un ROLLBACK en cualquier transacción activa, cierra todas las tablas temporales, desbloquea todas las tablas bloqueadas y resetea el estado como si se hubiese hecho una nueva conexión. Esto ocurrirá aunque el usuario no se cambie.

Valores de retorno

Cero si tiene éxisto. Distinto de cero si ocurre algún error.

Errores

Los mismos que se obtienen de la función mysql_real_connect().

CR_COMMANDS_OUT_OF_SYNC: Los comandos fueron ejecutados en un orden incorrecto.

CR_SERVER_GONE_ERROR: El servidor MySQL no está presente.

CR_SERVER_LOST: La conexión con el servidor se ha perdido durante la consulta.

CR_UNKNOWN_ERROR: Se ha producido un error desconocido.

ER_UNKNOWN_COM_ERROR: El servidor MySQL no implementa este comando (probablemente es un servidor antiguo).

ER_ACCESS_DENIED_ERROR: El usuario o la constraseña son incorrectos.

ER_BAD_DB_ERROR: La base de datos no existe.

ER_DBACCESS_DENIED_ERROR: El usuario no tiene derechos de acceso a la base de datos.

ER_WRONG_DB_NAME: El nombre de la base de datos es demasiado largo.

Ejemplo

if (mysql_change_user(&mysql, "user", "password", "new_database"))
{
   fprintf(stderr, "Imposible cambiar de usuario.  Error: %s\n",
           mysql_error(&mysql));
}