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