#ifdef _WIN32
#define snprintf _snprintf
#endif
bool ChangeRemoteRootPwd(const char* szHost,const char* szRoot,
const char* szRootPwd,const char* szDb,
const char* szUser,const char* szPwd)
{
MYSQL mysql;
mysql_init(&mysql);
if (!mysql_real_connect(&mysql,szHost,szRoot,szRootPwd,szDb,0,NULL,0))
{
printf("%s\n",mysql_error(&mysql));
mysql_close(&mysql);
return false;
}
char szSql[512] = {0};
/*
snprintf(szSql,sizeof(szSql)-1,"call pr_change_user(\'%s\')",szPwd);
if (mysql_query(&mysql,szSql) != 0)
{
printf("%s\n",mysql_error(&mysql));
mysql_close(&mysql);
return false;
}
*/
snprintf(szSql,sizeof(szSql)-1,"update mysql.user set password=PASSWORD(\'%s\') where user = \'root\' and host = \'%%\'",szPwd);
if (mysql_query(&mysql,szSql) != 0)
{
printf("%s\n",mysql_error(&mysql));
mysql_close(&mysql);
return false;
}
strcpy(szSql,"flush privileges");
if (mysql_query(&mysql,szSql) != 0)
{
printf("%s\n",mysql_error(&mysql));
mysql_close(&mysql);
return false;
}
mysql_close(&mysql);
return true;
}
本文介绍了一种通过C/C++程序远程更改MySQL数据库root用户密码的方法,并确保更改后的权限设置立即生效。
484

被折叠的 条评论
为什么被折叠?



