1)普通文件增加读取mysql.user表的权限

2)删除用户时,删除对应的config表
This commit is contained in:
luoliangyi 2022-12-12 11:41:26 +08:00
parent 0a27f3f095
commit c6a0a02c10
3 changed files with 25 additions and 18 deletions

View File

@ -125,7 +125,7 @@ HGEXPORT HGResult HGAPI HGPdtToolDb_SetPassword(HGPdtToolDbUserMgr userMgr, cons
/* 修改本账户的密码 */
HGEXPORT HGResult HGAPI HGPdtToolDb_ModifyPassword(HGPdtToolDbUserMgr userMgr, const HGChar* oldPwd, const HGChar* newPwd);
/* 导出所有设备测试信息到XLS文件,需要管理员账户才能调用 */
/* 导出所有设备测试信息到XLS文件 */
HGEXPORT HGResult HGAPI HGPdtToolDb_Export(HGPdtToolDbUserMgr userMgr, const HGChar *xlsPath);
/* 获取用户配置 */

View File

@ -229,7 +229,7 @@ HGResult HGPdtToolDbUserMgrImpl::GetUserList(HGChar** userNameList, HGUInt maxLe
}
char sqlCmd[1024] = {0};
sprintf(sqlCmd, "select user, host from mysql.user");
sprintf(sqlCmd, "select user, host from mysql.user;");
int ret = mysql_query(m_sql, sqlCmd);
if (0 != ret)
{
@ -305,9 +305,20 @@ HGResult HGPdtToolDbUserMgrImpl::CreateUser(const HGChar* userName, const HGChar
}
char sqlCmd[1024] = {0};
sprintf(sqlCmd, "grant all privileges on huago_production_tool.* to '%s'@'%%' identified by '%s';", userName, defPwd);
sprintf(sqlCmd, "create user '%s'@'%%' identified by '%s';", userName, defPwd);
int ret = mysql_query(m_sql, sqlCmd);
return (0 == ret) ? HGBASE_ERR_OK : HGBASE_ERR_FAIL;
if (0 != ret)
{
return HGBASE_ERR_FAIL;
}
sprintf(sqlCmd, "grant all privileges on huago_production_tool.* to '%s'@'%%';", userName);
ret = mysql_query(m_sql, sqlCmd);
assert(0 == ret);
sprintf(sqlCmd, "grant select on mysql.user to '%s'@'%%';", userName);
ret = mysql_query(m_sql, sqlCmd);
assert(0 == ret);
return HGBASE_ERR_OK;
}
HGResult HGPdtToolDbUserMgrImpl::DestroyUser(const HGChar* userName)
@ -335,6 +346,9 @@ HGResult HGPdtToolDbUserMgrImpl::DestroyUser(const HGChar* userName)
}
char sqlCmd[1024] = { 0 };
sprintf(sqlCmd, "drop table %s_config;", userName);
mysql_query(m_sql, sqlCmd);
sprintf(sqlCmd, "drop user '%s'@'%%';", userName);
int ret = mysql_query(m_sql, sqlCmd);
return (0 == ret) ? HGBASE_ERR_OK : HGBASE_ERR_FAIL;
@ -395,7 +409,7 @@ HGResult HGPdtToolDbUserMgrImpl::ModifyPassword(const HGChar* oldPwd, const HGCh
if (oldAuthStr.empty())
{
return HGBASE_ERR_FAIL;
return HGBASE_ERR_ACCESSDENIED;
}
std::string oldAuthStr2;
@ -435,13 +449,6 @@ HGResult HGPdtToolDbUserMgrImpl::Export(const HGChar* xlsPath)
return HGBASE_ERR_INVALIDARG;
}
HGUInt userType = 0;
GetUserType(&userType);
if (HGPDTTOOLDB_USERTYPE_ROOT != userType)
{
return HGBASE_ERR_ACCESSDENIED;
}
std::string cmd = "select main_test.sn";
cmd += ", main_test.create_time";
cmd += ", main_test.create_user";
@ -639,7 +646,7 @@ HGResult HGPdtToolDbUserMgrImpl::SetConfig(const HGChar* key, const HGChar* valu
}
char sqlCmd[1024] = {0};
sprintf(sqlCmd, "insert into %s_config (config_key, config_value) values ('%s', '%s')",
sprintf(sqlCmd, "insert into %s_config (config_key, config_value) values ('%s', '%s');",
m_userName.c_str(), key, (NULL != value) ? value : "");
int ret = mysql_query(m_sql, sqlCmd);
if (0 == ret)
@ -649,7 +656,7 @@ HGResult HGPdtToolDbUserMgrImpl::SetConfig(const HGChar* key, const HGChar* valu
if (1062 == mysql_errno(m_sql))
{
sprintf(sqlCmd, "update %s_config set config_value = '%s' where config_key = '%s'",
sprintf(sqlCmd, "update %s_config set config_value = '%s' where config_key = '%s';",
m_userName.c_str(), (NULL != value) ? value : "", key);
int ret = mysql_query(m_sql, sqlCmd);
return (0 == ret) ? HGBASE_ERR_OK : HGBASE_ERR_FAIL;
@ -729,7 +736,7 @@ int HGPdtToolDbUserMgrImpl::CreateUserConfigTable(MYSQL* sql, const HGChar* user
assert(NULL != user && 0 != *user);
char sqlCmd[1024] = {0};
sprintf(sqlCmd, "create table if not exists %s_config (config_key varchar(40) not null primary key, config_value text)", user);
sprintf(sqlCmd, "create table if not exists %s_config (config_key varchar(40) not null primary key, config_value text);", user);
return mysql_query(sql, sqlCmd);
}

View File

@ -5,7 +5,7 @@
int main()
{
HGPdtToolDbUserMgr userMgr = NULL;
HGPdtToolDb_CreateUserMgr("127.0.0.1", 3306, "root", "123456", &userMgr);
HGPdtToolDb_CreateUserMgr("127.0.0.1", 3306, "huago", "123456", &userMgr);
if (NULL != userMgr)
{
HGChar* name[256];
@ -14,8 +14,8 @@ int main()
//HGPdtToolDb_DestroyUser(userMgr, "huago");
//HGPdtToolDb_CreateUser(userMgr, "huago", "huago");
HGPdtToolDb_ModifyPassword(userMgr, "12345", "123456");
//HGPdtToolDb_CreateUser(userMgr, "huago", "123456");
HGPdtToolDb_ModifyPassword(userMgr, "123456", "huago");
//HGPdtToolDb_SetPassword(userMgr, "huago", "qqq");
HGPdtToolDbDevice device = NULL;