27.7.6.3 mysql_change_user()

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

Description

更改用户,并使db指定的数据库成为mysql指定的连接上的默认(当前)数据库。在后续查询中,该数据库是不包含显式数据库说明符的 table 引用的默认数据库。

如果所连接的用户无法通过身份验证或没有使用数据库的权限,则mysql_change_user()失败。在这种情况下,用户和数据库都不会更改。

如果您不想使用默认数据库,请传递db参数NULL

此功能重置会话状态,就好像一个人进行了新连接并重新进行身份验证一样。 (请参阅第 27.7.19 节“ C API 自动重新连接控制”。)它始终对所有活动事务执行ROLLBACK,关闭和删除所有临时 table,并解锁所有锁定的 table。会话系统变量将重置为相应的全局系统变量的值。释放准备好的语句,并关闭HANDLER变量。用GET_LOCK()获取的锁被释放。即使用户没有更改,也会出现这些效果。

要以更轻量的方式重置连接状态而不更改用户,请使用mysql_reset_connection()

Return Values

零成功。如果发生错误,则为非零值。

Errors

您可以从mysql_real_connect()获得的结果与以下结果相同:

命令执行 Sequences 不正确。

MySQL 服务器已经消失了。

在查询期间与服务器的连接已丢失。

出现未知错误。

MySQL 服务器未实现此命令(可能是旧服务器)。

用户或密码错误。

该数据库不存在。

用户没有对该数据库的访问权限。

数据库名称太长。

Example
if (mysql_change_user(&mysql, "user", "password", "new_database"))
{
   fprintf(stderr, "Failed to change user.  Error: %s\n",
           mysql_error(&mysql));
}