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 服务器未实现此命令(可能是旧服务器)。
-
用户名或密码错误。
-
数据库不存在。
-
用户没有访问该数据库的权限。
-
数据库名称过长。