bool
mysql_change_user(MYSQL *mysql,
const char *user,
const char *password,
const char *db)
更改用户并使 db
指定的数据库成为由 mysql
指定的连接上的默认(当前)数据库。在后续查询中,此数据库是未包含显式数据库说明符的表引用的默认数据库。
如果连接的用户无法通过身份验证或没有使用该数据库的权限,则 mysql_change_user()
将失败。在这种情况下,用户和数据库不会更改。
如果不想使用默认数据库,请传递 NULL
的 db
参数。
此函数会重置会话状态,就像执行了新的连接并重新进行了身份验证一样。(请参阅第 3.6.8 节 “自动重新连接控制”。)它始终会执行任何活动事务的 ROLLBACK
,关闭并删除所有临时表,并解锁所有锁定的表。它会将会话系统变量重置为相应的全局系统变量的值,释放预处理语句,关闭 HANDLER
变量,并释放使用 GET_LOCK()
获取的锁。清除调用 mysql_bind_param()
后定义的所有当前查询属性。即使用户没有更改,这些影响也会发生。
要以更轻量级的方式重置连接状态而不更改用户,请使用 mysql_reset_connection()
。
与 mysql_real_connect()
相同,此外还有:
-
命令执行顺序不正确。
-
MySQL 服务器已消失。
-
在查询期间与服务器的连接断开。
-
发生未知错误。
-
MySQL 服务器未实现此命令(可能是旧服务器)。
-
用户名或密码错误。
-
数据库不存在。
-
用户没有访问数据库的权限。
-
数据库名称过长。