my_bool mysql_change_user(MYSQL *mysql, const char *user, const char *password, const char *db)
描述
更改用户,并使由db指定的数据库成为由mysql指定的连接上的默认数据库(当前数据库)。在后续查询中,对于不包含显式数据库区分符的表引用,该数据库是默认数据库。
如果不能确定已连接的用户或用户不具有使用数据库的权限,mysql_change_user()将失败。在这种情况下,不会改变用户和数据库。
如果不打算拥有默认数据库,可将db参数设置为NULL。
该命令总是会执行活动事务的ROLLBACK操作,关闭所有的临时表,解锁所有的锁定表,并复位状态,就像进行了新连接那样。即使未更改用户,也会出现该情况。
返回值
0表示成功,非0值表示出现错误。
错误
与从mysql_real_connect()获得的相同。
· CR_COMMANDS_OUT_OF_SYNC
以不恰当的顺序执行了命令。
· CR_SERVER_GONE_ERROR
MySQL服务器不可用。
· CR_SERVER_LOST
在查询过程中丢失了与服务器的连接。
· CR_UNKNOWN_ERROR
出现未知错误。
· ER_UNKNOWN_COM_ERROR
MySQL服务器未实施该命令(或许是较低版本的服务器)。
· ER_ACCESS_DENIED_ERROR
用户或密码错误。
· ER_BAD_DB_ERROR
数据库不存在。
· ER_DBACCESS_DENIED_ERROR
用户没有访问数据库的权限。
· ER_WRONG_DB_NAME
数据库名称过长。
示例:
if (mysql_change_user(&mysql, "user", "password", "new_database"))
{
fprintf(stderr, "Failed to change user. Error: %s\n",
mysql_error(&mysql));
}