文档首页
MySQL 8.4 C API 开发者指南
下载本手册
PDF (US Ltr) - 1.4Mb
PDF (A4) - 1.4Mb


5.4.4 mysql_change_user()

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

描述

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

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

如果不想设置默认数据库,请传递 NULLdb 参数。

此函数重置会话状态,就像执行了新的连接并重新进行了身份验证一样。(请参阅 第 3.6.8 节“自动重新连接控制”。) 它始终会对任何活动事务执行 ROLLBACK,关闭并删除所有临时表,并解锁所有锁定的表。它将会话系统变量重置为相应的全局系统变量的值,释放预处理语句,关闭 HANDLER 变量,并释放使用 GET_LOCK() 获取的锁。清除调用 mysql_bind_param() 后定义的任何当前查询属性。即使用户未更改,这些影响也会发生。

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

返回值

成功则返回零。如果发生错误则返回非零值。

错误

mysql_real_connect() 相同的错误,以及:

示例

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